2012-03-01 124 views
2

我有一個應用程序,我在其中提交數據到Facebook,我有登錄和一切正常工作,成功登錄後將用戶憑據存儲在用戶默認值。iOS SDK註銷後臺和會話

我遇到的問題是,似乎沒有辦法檢測用戶何時註銷了Facebook應用程序或使用Mobile Safari。這意味着我的應用程序在其整個生命週期內都與唯一的用戶綁定。

我不想在我的應用程序中放置「註銷」按鈕,如果我有一個,那麼我可以輕鬆地調用註銷方法並刪除用戶憑證,這意味着新用戶可以使用我的應用程序進行身份驗證,但這不是可能性。

有誰知道我可以檢查一個用戶是否登錄的方法,如果是這樣,得到他們的Facebook ID?這樣我可以再次強制授權,如果沒有人登錄或者登錄用戶的憑證和保存的憑證不匹配。

感謝

回答

1

我認爲這個問題,這裏的困惑是,FB實施了「單點登錄(SS-開)」,而不是「單點登錄輸出(SS -Out)」。

SS-On的工作方式是,如果您以前登錄過應用程序,則會將令牌存儲在您的應用程序中。這意味着即使您已註銷FB應用程序,並且可能隨後以其他用戶身份登錄,只要您的應用程序仍具有來自先前用戶的令牌,仍可以訪問先前的用戶數據。

當你的應用轉到背景時,你可以做的是closeSessionAndClearToken。這可能是也可能不是你想要的行爲。請注意,這意味着你的應用程序從後臺主動返回,它需要每次都重新進行SS-On的整個演練。

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    [FBSession.activeSession closeSessionAndClearToken]; 
} 
1

您可以使用

if([facebook isSessionValid]) 
{ 
    // 1. Either the user has logged out 
    // 2. Or the user has changed the password 
} 
+0

這似乎不起作用,如果用戶將應用程序放入後臺,使用Facebook應用程序註銷然後返回到我的應用程序,isSessionValid仍然會返回true。此外,這並不包括用戶註銷,然後新用戶在後臺登錄的可能性。 – x0b 2012-03-22 10:30:31

+0

登錄到Facebook應用程序和「您的應用程序」中的有效登錄是兩回事。 – vipinagg 2012-03-26 16:49:53

+0

我認爲單點登錄的重點是所有使用它的應用都共享登錄狀態? http://www.facebook.com/pages/Single-sign-on/108568432501463 – x0b 2012-03-26 20:15:31