React Native和Parse.FacebookUtils

时间:2015-04-05 01:29:18

标签: facebook parse-platform facebook-javascript-sdk reactjs react-native

我想使用Parse和Facebook将用户签入我的React-Native应用程序,但似乎Facebook JS SDK依赖于dom。如何使用Facebook登录用户?

我目前正在使用https://github.com/magus/react-native-facebook-login本地登录用户,因此我可以访问他们的身份验证令牌等。但是不能使用没有FB JS SDK的Parse.FacebookUtils.login()。

4 个答案:

答案 0 :(得分:5)

如果您拥有来自本机FB SDK的authData,则可以完全绕过FacebookUtils.init()调用。这应该使用FB登录到Parse用户:

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

这将返回一个Promise,与Parse.FacebookUtils.logIn()

相同

答案 1 :(得分:1)

我设法通过在Parse SDK Parse.FacebookUtils.logIn流程中注释掉对FB的引用并删除安全检查来解决这个问题。如果您已经拥有authData对象,则实际上不需要FB SDK来验证具有Parse的用户。

显然不是一个理想的解决方案,所以保持这个开放

答案 2 :(得分:0)

在React Native中,您可以使用RCTBridgeModule / NativeModules API登录Facebook用户。

实质上,您必须编写一个可以直接访问本机Facebook Login Manager API的本机模块。

您可以找到有关此流程的更多信息here

答案 3 :(得分: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兼容版本!