2016-10-03 53 views
3

如果我使用react-native-fbsdk中的LoginButton,LoginBehaviour似乎是「native」,因爲SDK與安裝的FB應用程序進行通信,發現我已經授予了權限,只是登錄了我而不顯示任何對話框,等等如何在使用react-native-fbsdk LoginManager時設置LoginBehaviour?

當我使用LoginManger.logInWithPublishPermissions()機制時,我總是被帶到瀏覽器和一個屏幕,說我已經給我的應用程序的權限。我認爲我可以通過設置登錄行爲來改變這一點,但我無法弄清楚如何成功地做到這一點。這裏就是我試過

import { GraphRequest, GraphRequestManager, LoginManager, LoginBehaviorIOS } from 'react-native-fbsdk'; 
LoginManager.setLoginBehavior(LoginBehaviorIOS); 

//ERROR: Argument 0 (FBSDKLoginBehaviour) of FBLoginManager: must not be null 

然後我嘗試這樣的:

LoginManager.setLoginBehavior('native'); 

// No error, but still gives me the same behaviour. 

什麼時候LoginButton和LoginManager行爲方式?如何在使用LoginManager時設置登錄行爲,使其像LoginButton一樣工作?

我已經添加的所有代碼到AppDelegate.m文件,包括入門指南中的所有其他指令:https://developers.facebook.com/docs/ios/getting-started/

+1

所以我可以證實這個作品。 'LoginManager.setLoginBehavior(Platform.OS ==='ios'?'web':'web_only')'。他們在他們的文檔中聲明,即使您將其設置爲「native」,SDK仍可能選擇webview。 –

回答

2

我也有類似的問題,並設法使其通過設置登錄行爲工作如下:

LoginManager.setLoginBehavior('NATIVE_ONLY'); 

的Facebook文檔很差,即使在反應天然-fbsdk GitHub的repo關於主題:(

編輯: 使用natie_only行爲有一個問題。用戶必須在此電話上安裝FB,否則FB SDK將無提示失敗。爲了解決這個問題,我決定在native_only失敗的情況下啓動WEB_ONLY行爲。我的例子是針對Android進行測試的,而不是iOS。

let result; 
try { 
    LoginManager.setLoginBehavior('NATIVE_ONLY'); 
    result = await LoginManager.logInWithReadPermissions(['public_profile', 'email']); 
} catch (error) { 
    LoginManager.setLoginBehavior('WEB_ONLY'); 
    result = await LoginManager.logInWithReadPermissions(['public_profile', 'email']); 
} 
+0

它在iOS上是'native',但似乎沒有觸發原生登錄。但是在Android上它很好地工作。 –

+0

感謝您的評論!還沒有在iOS中嘗試過,但在Android中,'native'和'native_only'值有所不同。使用'native'值,FB ​​SDK會爲您做出決定:在我的情況下,它同時觸發本機登錄和Web登錄,後者恰好在第一次之後觸發。 – jeevana

+0

是的,這就是我結束了,不得不打電話給系統版本,然後在它的錯誤處理程序調用一個Web版本。謝啦。 @ user3206020 –

相關問題