回答

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兼容版本!