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