2012-03-28 85 views
0

我執行下面的代碼從我的iPhone應用程序退出的Facebook:Facebook的註銷未通過Facebook連接iPhone API正常工作

if ([mFacebook isSessionValid]) { 
    [mFacebook logout]; 
} 

這段代碼成功運行,並且委託後,這家名爲中,我正在清除訪問令牌:

- (void)fbDidLogout 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults removeObjectForKey:@"FBAccessTokenKey"]; 
    [defaults removeObjectForKey:@"FBExpirationDateKey"]; 
    [defaults synchronize]; 
} 

但是當我再次登錄Facebook時,它不會詢問用戶名和密碼。

我在做什麼錯?

+0

那些是獲取調用方法或不是你已經寫代碼的註銷按鈕? – 2012-03-28 05:47:34

+0

是的這些方法正在成功調用,但是當我登錄時,我沒有要求輸入用戶名和密碼。它直接表示您以「SampleName」身份登錄。 理想情況下,它應該要求輸入用戶名和密碼。 如果我卸載應用程序,然後它要求憑據。 – iVipS 2012-03-28 05:54:10

+0

如果您可以粘貼您的所有代碼進行Facebook集成,則更好。 – 2012-03-28 06:20:55

回答

4

您是否在使用FB移動登錄對話框?在Facebook.m中,添加以下代碼以刪除m.facebook.com域中的Cookie。

- (void)invalidateSession { 

    ... 
    NSArray* facebookMCookies = [cookies cookiesForURL: 
           [NSURL URLWithString:@"https://m.facebook.com"]]; 

    for (NSHTTPCookie* cookie in facebookMCookies) { 
     [cookies deleteCookie:cookie]; 
    } 

    ... 
} 
0

試試這個代碼:

- (void) fbDidLogout { 
    // Remove saved authorization information if it exists 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if ([defaults objectForKey:@"FBAccessTokenKey"]) { 
     [defaults removeObjectForKey:@"FBAccessTokenKey"]; 
     [defaults removeObjectForKey:@"FBExpirationDateKey"]; 
     [defaults synchronize]; 
    } 
} 

不要忘了在你的AppDelegate facebook.h創建一個實例。

+0

對不起,但你提到的是我寫在我的問題相同的代碼.. – iVipS 2012-03-28 06:03:43

+0

你的會議沒有得到失效。這就是問題。你在你的ViewController中添加FBSessionDelegate? – 2012-03-28 06:07:23

+0

是的,它已經實施,但沒有運氣。 – iVipS 2012-03-28 06:17:57

0

只是這行添加到fbDidLogout方法

[mFacebook invalidateSession]; 

這必將讓你從Facebook註銷。

+0

試過了,沒有工作。 – 2012-04-26 16:29:07

+0

@Solivagant >>嗨,你解決了這個問題嗎? – 2012-10-03 12:32:43

0

嘗試從Facebook應用程序註銷。它可能只是從Facebook應用程序中獲取令牌。

2

試着在你fbDidLogout塊的末尾添加這些:

mFacebook.accessToken = nil; 
NSHTTPCookie *cookie; 
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
for (cookie in [storage cookies]) 
{ 
    NSString* domainName = [cookie domain]; 
    NSRange domainRange = [domainName rangeOfString:@"facebook"]; 
    if(domainRange.length > 0) 
    { 
     [storage deleteCookie:cookie]; 
    } 
}