3

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

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

4

4 回答 4

6

如果您有来自本机 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() 相同

于 2015-04-05T23:47:42.013 回答
1

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

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

于 2015-04-05T05:24:47.893 回答
0

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

本质上,您必须编写一个可以直接访问本机 Facebook 登录管理器 API 的本机模块。

您可以在此处找到有关此过程的更多信息。

于 2015-04-05T02:15:43.760 回答
0

Parse.FacebookUtils.logIn其实不依赖FB JS SDK,所以可以直接调用(只要传入authData对象即可)。

如果它对其他人有帮助,我在将 Parse 帐户与 Facebook 帐户链接和取消链接时遇到了困难。例如,该unlink方法依赖于 FB JS SDK。我通过 1. not call Parse.FacebookUtils.init2. 创建一个“假 Facebook 提供商”来解决这个问题:

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

和 3. 将其传递给Parse.User._isLinkedand Parse.User._unlinkFrom

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

到目前为止,这运作良好。这可能会达到与 Tarrence 的答案相同的效果,而无需编辑 Parse 代码。

我们真的需要一个Parse.FacebookUtils不依赖 FB JS SDK 的 React Native 兼容版本!

于 2016-01-11T00:13:47.433 回答