2015-05-05 16 views
3

我想知道當用戶已經通過Facebook應用程序在設備上登錄Facebook並且該應用程序被授予上次登錄所需的權限時,在iPhone應用程序中集成的Facebook登錄的預期行爲是什麼。我想知道應用程序是否退出並重新開始,是否應該切換到Facebook應用程序/網站以檢查權限,還是應該在不離開應用程序的情況下悄悄登錄用戶?目前,我的應用切換到Facebook,檢測到用戶已經授予訪問權限,請求確定或取消並返回到應用。我想知道這種行爲是否有預期,因爲它似乎什麼都不做,除了不必要的切換。我以另一種形式提出了這個問題,並且包含了我的代碼。以下是鏈接:http://bit.ly/1E1u2VIFacebook登錄的預期行爲是什麼?

謝謝!

回答

3

它靜靜地登錄用戶,而不會離開應用程序。爲此,您可以檢查當前用戶的權限。

這可以幫助你:

控制登錄對話框

Facebook的SDK自動選擇基於賬戶設置和一個人的設備的能力的最佳登錄對話框流動。這是Facebook的SDK實現默認的序列:

  1. Facebook應用本地登錄對話框
  2. 的Facebook應用程序的Web登錄對話框
  3. 移動Safari瀏覽器登錄對話框
  4. 如果未設置了Facebook帳戶中, Facebook SDK會檢查設備上是否安裝了Facebook應用程序。如果Facebook應用程序已安裝,則會顯示Facebook應用程序本機登錄對話框(如果支持)。如果由於應用程序的舊版本而無法顯示Facebook應用程序本地登錄對話框,則會顯示Facebook應用程序Web登錄對話框。如果未安裝Facebook應用程序,則啓動移動Safari以顯示Mobile Safari登錄對話框。

這裏有

enter image description here

enter image description here

enter image description here

+0

尼斯回覆!所以你說它應該保持沉默。請參閱上面的鏈接以查看我的代碼。重新啓動應用程序後,我檢查當前的AccessToken爲零,因此我調用logInWithReadPermissions,我期望使用本機登錄行爲,在這種情況下,您應該說它應該保持沉默。但是,它會離開我的應用程序。如何通過打開日誌來調試Facebook代碼,以便我知道它選擇的行爲?在FBSDKLoginManager代碼中,當本地行爲失敗並落入瀏覽器行爲時,會有一條日誌語句。我現在在我的應用程序中看不到任何FB日誌。謝謝! – user2732722

+1

非常好!非常感謝!這解決了我的問題。解決方案在應用程序中:didFinishLaunchingWithOptions方法。我沒有打電話給Facebook應用程序:didFinishLaunchingWithOptions。我添加了它,並且登錄名無聲無息。所以,這是在應用程序啓動時加載currentAccessToken的方法。沒有這個改變,我的currentAccessToken在啓動時就沒有了,所以我的代碼調用了導致應用程序退出的登錄方法。 Facebook在他們的文檔中沒有提到這個!謝謝Vijay! – user2732722

3

我已經檢查使用Safari瀏覽器這是爲我工作的登錄過程的代碼截圖。 [FBSDKAccessToken currentAccessToken]工作正常。我附上一些截圖可能會對您有所幫助。

AppDelegate Class

Login Button action

Check user already logged in

+0

非常好!謝謝。解決方案在這個調用中:[[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions]; – YvesJusot

+0

我稱之爲「[[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];」感謝YvesJusot拯救了我的生命。:) – aybars

相關問題