我想使用 Parse 和 Facebook 将用户登录到我的 React-Native 应用程序,但 Facebook JS SDK 似乎依赖于 dom。如何使用 facebook 登录用户?
我目前正在使用https://github.com/magus/react-native-facebook-login本地登录用户,因此我可以访问他们的身份验证令牌等。但不能在没有 FB JS SDK 的情况下使用 Parse.FacebookUtils.login() 。
我想使用 Parse 和 Facebook 将用户登录到我的 React-Native 应用程序,但 Facebook JS SDK 似乎依赖于 dom。如何使用 facebook 登录用户?
我目前正在使用https://github.com/magus/react-native-facebook-login本地登录用户,因此我可以访问他们的身份验证令牌等。但不能在没有 FB JS SDK 的情况下使用 Parse.FacebookUtils.login() 。
如果您有来自本机 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() 相同
我设法通过在 Parse SDK Parse.FacebookUtils.logIn 流中注释掉对 FB 的引用并删除安全检查来解决这个问题。如果您已经拥有 authData 对象,则实际上不需要 FB SDK 来使用 Parse 对用户进行身份验证。
显然不是一个理想的解决方案,所以保持开放
在 React Native 中,您可以使用 RCTBridgeModule/NativeModules API 使用 Facebook 登录用户。
本质上,您必须编写一个可以直接访问本机 Facebook 登录管理器 API 的本机模块。
您可以在此处找到有关此过程的更多信息。
Parse.FacebookUtils.logIn
其实不依赖FB JS SDK,所以可以直接调用(只要传入authData
对象即可)。
如果它对其他人有帮助,我在将 Parse 帐户与 Facebook 帐户链接和取消链接时遇到了困难。例如,该unlink
方法依赖于 FB JS SDK。我通过 1. not call Parse.FacebookUtils.init
2. 创建一个“假 Facebook 提供商”来解决这个问题:
var FakeFacebookProvider = {
getAuthType: function () {
return 'facebook';
},
restoreAuthentication: function () {
return true;
},
};
和 3. 将其传递给Parse.User._isLinked
and Parse.User._unlinkFrom
:
if (user._isLinked(FakeFacebookProvider)) {
user._unlinkFrom(FakeFacebookProvider, {
到目前为止,这运作良好。这可能会达到与 Tarrence 的答案相同的效果,而无需编辑 Parse 代码。
我们真的需要一个Parse.FacebookUtils
不依赖 FB JS SDK 的 React Native 兼容版本!