2011-03-29 385 views
0

使用Facebook SDK for iOS,如何確定用戶是否已登錄,以便應用程序無需通過登錄過程?Facebook SDK iOS登錄

當前在登錄過程中,我將訪問令牌和過期日期保存爲用戶默認值,然後在我的應用程序運行時開始初始化Facebook對象時再讀取它們。

但是如果用戶背景的應用程序,進入Safari,更改爲不同的Facebook帳戶或標誌,然後回到我自己的應用程序會發生什麼。 Facebook應用不應該返回已存儲的會話無效嗎?我如何解釋這一點?目前,我的facebook對象認爲會話是有效的,但不幸的是,當我嘗試發佈某些內容時,我在適當的Facebook頁面上看不到任何內容。

我在這裏錯過了什麼嗎?謝謝你的幫助!

+0

可以'[Facebook的isSessionValid]'幫助嗎? – 2011-03-29 21:59:14

回答

0

您正在做正確的事情保存和恢復facebook訪問令牌&到期日期。如果您使用過期的令牌調用它,任何需要有效令牌的FB API都將失敗,並顯示錯誤。從FB本地處理錯誤和註銷,然後要求用戶再次登錄。

0

關於Facebook在iPhone上的登錄(SDK v3.0 +),它將系統級登錄1st,Facebook本機iOS應用程序2nd和移動Safari Facebook登錄排名第三。但是,如果用戶使用移動Safari瀏覽器登錄到您的應用程序,將應用程序背景化,使用移動Safari瀏覽器登錄到其他Facebook帳戶,然後返回到您的應用程序,則應用程序中的訪問令牌和會話纔會有效,直到您從iOS註銷應用程序。通常,您註銷使用此行:

[FBSession.activeSession closeAndClearTokenInformation]; 

登錄由這條線的一些變化開始:

[FBSession openActiveSessionWithReadPermissions: 

如果您正在使用Facebook的iOS版SDK 3.2+,您可以撥打以下看如果已驗證的Facebook會話打開:

[[FBSession activeSession] isOpen] 

此外,您不必在本地保存訪問令牌或到期日期。你可以用這些調用訪問它們:

[FBSession activeSession].accessTokenData.accessToken 
[FBSession activeSession].accessTokenData.expirationDate 

下面是一些相關的Facebook的iOS文檔的鏈接:

Facebook Login - iOS SDK