我想使用Parse和Facebook将用户签入我的React-Native应用程序,但似乎Facebook JS SDK依赖于dom。如何使用Facebook登录用户?
我目前正在使用https://github.com/magus/react-native-facebook-login本地登录用户,因此我可以访问他们的身份验证令牌等。但是不能使用没有FB JS SDK的Parse.FacebookUtils.login()。
答案 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._isLinked
和Parse.User._unlinkFrom
:
if (user._isLinked(FakeFacebookProvider)) {
user._unlinkFrom(FakeFacebookProvider, {
到目前为止,这种方法运作良好。这可能与Tarrence的答案完全相同,而无需编辑Parse代码。
我们真的需要一个不依赖于FB JS SDK的Parse.FacebookUtils
的React Native兼容版本!