2013-02-15 15 views
2

我知道如何登錄如何退出的Facebook的iOS中

[FBSession openActiveSessionWithReadPermissions:readPermissions allowLoginUI:YES completionHandler: 
^(FBSession *session,FBSessionState state, NSError *error) { 
    [self sessionStateChanged:session state:state error:error];//This is done on main thread already 
}]; 

的事情是什麼,註銷時做的,說當用戶按下注銷按鈕?

目前,我只是做

[FBSession.activeSession closeAndClearTokenInformation]; 
[[NSNotificationCenter defaultCenter] postNotificationName:FACEBOOKSESSIONCHANGED object:self]; 

不過,我不認爲這是真的。 [FBSession.activeSession closeAndClearTokenInformation];應該在[self sessionStateChanged:session state:state error:error]中調用;註銷後。

那麼我應該怎麼做才能註銷?

我檢查來自facebook的垃圾郵件樣本,我找不到它們的註銷機制。看起來他們使用具有委託的專門的facebook viewController。但是沒有一個代表被調用。

回答

1

註銷機制,它們通過釋放它並將其設置爲零來使訪問令牌失效。但是,如果您的登錄使用Safari瀏覽器,那麼Cookie仍然存在。所以下次如果用戶打開safari並嘗試訪問Facebook,它會說它已經被授權。 要刪除我用下面的方法餅乾

- (void)fbDidLogout 
{ 
    NSLog(@"Logged out of facebook"); 
    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]; 
     } 
    } 
} 

更相信你也可以撥打一些錯誤是有其甚至稱closeAndClearTokenInformation後返回打開的會話。 https://developers.facebook.com/bugs/497294866962479?browse=search_507cb8ebc4f025673237228

[FBSession.activeSession closeAndClearTokenInformation]; 
[FBSession.activeSession close]; 
[FBSession setActiveSession:nil]; 

其他選項是在檢查活動會話時使用以下條件。

if (FBSession.activeSession.isOpen) 
//logged in 
else 
//not logged in 

因爲FBSession.activeSession.state返航FBSessionStateOpen,不FBSessionStateCreatedTokenLoaded。

+0

所以我通過調用closeAndClearTokenInformation做正確的事情? – 2013-02-15 05:37:25

+0

@JimThio你可以檢查該方法的執行情況,以便更確定。但它的權利:) – 2013-02-15 05:47:22

+0

什麼方法? fbdid註銷> – 2013-02-15 05:47:55

0

不知道是否有人仍然被這個咬傷,但是用最新版本的Facebook SDK,我無法讓iPad在註銷後被迫登錄。這裏仍然存在某種奇怪的現象 - 「清除Cookie」代碼正在被跳過 - 是否有另一種方法可以清除iPad中的Cookie? Jerry