回答

4

如果你從本地FB SDK您的authData,您可以繞過FacebookUtils.init()調用完全。這應該登錄到分析用戶與FB:

Parse.User._logInWith('facebook', { 
    authData: { 
    id: FB_USER_ID, 
    access_token: USER_ACCESS_TOKEN, 
    expiration_date: TOKEN_EXPIRATION_DATE 
    } 
}); 

這會返回一個承諾,同Parse.FacebookUtils.logIn()

+0

看來這段代碼路徑仍然需要FB JS SDK存在 – Tarrence 2015-04-06 00:02:27

+1

這是不調用'Parse.FacebookUtils.init ()'?如果身份驗證提供程序從未註冊過Parse SDK – 2015-04-06 01:51:53

+0

,那麼所有對「FB」的引用都是可以避免的,你是對的。我仍然在調用init() – Tarrence 2015-04-06 02:00:12

0

在React Native中,您可以通過使用RCTBridgeModule/NativeModules API在Facebook上登錄用戶。

從本質上講,你必須編寫一個本地模塊,可以直接訪問本地Facebook登錄管理器API。

您可以找到有關此過程here的更多信息。

+0

謝謝。我記錄本地用戶的罰款,然後我想使用身份驗證令牌登錄用戶分析 – Tarrence 2015-04-05 02:18:18

1

我設法通過解析Parse SDK Parse.FacebookUtils.logIn流中對FB的引用並刪除安全檢查來解決此問題。如果您已經擁有authData對象,則FB SDK實際上不需要使用Parse來驗證用戶。

顯然不是一個理想的解決方案,所以離開這個開放

0

Parse.FacebookUtils.logIn其實並不依賴於FB JS SDK,所以你可以直接調用它(只要你通過authData對象)。

如果對其他人有幫助,我會遇到連接和解除Parse帳戶與Facebook帳戶關聯的困難。例如,unlink方法依賴於FB JS SDK。我工作圍繞這個由1沒有要求Parse.FacebookUtils.init,2.創建一個「假Facebook的提供者」:

var FakeFacebookProvider = { 
    getAuthType: function() { 
    return 'facebook'; 
    }, 
    restoreAuthentication: function() { 
    return true; 
    }, 
}; 

和3通過這個中Parse.User._isLinkedParse.User._unlinkFrom

if (user._isLinked(FakeFacebookProvider)) { 
    user._unlinkFrom(FakeFacebookProvider, { 

到目前爲止,這是運作良好。這可能會達到與Tarrence的答案相同的效果,而無需編輯Parse代碼。

我們確實需要一個不依賴FB JS SDK的Parse.FacebookUtils的React Native兼容版本!