2015-02-18 185 views
0

我正在爲我的後端使用適用於iOS的Facebook SDK以及parse.com SDK(但這對我的問題並不重要)。Facebook SDK for iOS處理登錄

這兩個SDK都正常工作。

當用戶第一次打開我的應用程序(只要他沒有登錄),將出現一個模式視圖控制器,其中顯示「你沒有登錄等等」以及由Facebook提供的登錄按鈕SDK。

當用戶點擊登錄按鈕時,Facebook應用程序(或Safari)打開,您可以使用Facebook登錄,然後返回到我的應用程序,並且您已登錄。也可以正常工作。

因此,當用戶現在登錄或他在第二天打開應用程序時,我如何檢查他是否已登錄?我想獲取登錄用戶的全部新聞提要以顯示。

如果我使用

FBSession.activeSession().isOpen 

它總是假的,因爲當時我想知道,會話處於非活動狀態。是否有任何通知或事件處理程序能夠了解會話何時激活?

這就是我想要的:

  • 當用戶打開應用程序(他登錄)視圖控制器應該這樣說:「登錄到Facebook和加載你的新聞源..
  • 登錄成功後,視圖應顯示最新的例如從用戶的新聞訂閱20個職位
  • 在不登錄的用戶,我想告訴我的模態視圖控制器與Facebook的登錄按鈕

我讀了Facebook SDK的文檔和搜索的在谷歌很多,但沒有回答我的問題。我只是想知道如何處理該死的Facebook登錄。

請幫幫我!

回答

3

當應用程序加載時,FB SDK不會自行加載任何東西。您可以提示它檢查用戶是否仍然連接到您的應用程序,而無需啓動登錄對話框。

對於FB SDK 3.x版:

if (!FBSession.activeSession.isOpen) { 
    BOOL isLoggedIn = [FBSession openActiveSessionWithAllowLoginUI:NO]; 
} 

FB SDK 4.x版現在檢查自身,只要你添加appropriate lines to your app delegate from their documentation.

BOOL isLoggedIn = NO; 
if ([FBSDKAccessToken currentAccessToken]) { 
    isLoggedIn = YES; 
    NSLog(@"facebook already connected"); 
} 

理想情況下,你應該跟蹤與否在我看來,用戶先前已經通過保存一些信息(例如他們的FB ID)登錄到NSUserDefaults,而不是依賴於Facebook的SDK,但這應該起作用。

+0

明天我會試試,謝謝! – beeef 2015-02-18 00:30:43

+0

謝謝,這真的幫了我很多!似乎不是很棘手,但它工作:)) – beeef 2015-02-18 13:59:15