我无法在RN中使用他的Facebook凭据在Firebase中注册用户。 Facebook和Firebase应用程序设置正确,因为一切都在Swift中按预期工作。 OAuth重定向URI也已正确设置。
然而,当我尝试从RN执行相同的过程时,它失败了。我的设置如下,当用户点击我的登录按钮时,我呼叫FB LoginManager.logInWithReadPermissions(['public_profile', 'email'])
,并且成功之后我致电FirebaseManager
(这是我管理Firebase的自定义类) )signUpWithFacebook()
。我正确地获得了一个FB访问令牌,我可以看到创建了一个凭证对象。
但是,Firebase始终会返回错误:
{"错误" {"错误":[{"结构域":"全球""理由&#34 ;:"无效","消息":"发生系统错误"}],"代码":400,"消息":"发生系统错误"}}
FirebaseManager如下所示:
import { AsyncStorage, NativeModules } from "react-native";
import * as firebase from 'firebase';
const firebaseConfig = {
apiKey: "key",
authDomain: "domain",
databaseURL: "db_url",
projectId: "project_id",
storageBucket: "storage_bucket"
};
const firebaseApp = firebase.initializeApp(firebaseConfig);
const FBSDK = require('react-native-fbsdk');
const {
AccessToken
} = FBSDK;
export default class FirebaseManager {
constructor() {
// Some logic...
}
signUpWithFacebook() {
AccessToken.getCurrentAccessToken().then((data) => {
let accessToken = data.accessToken
console.log('FB accessToken: ' + accessToken)
const provider = new firebase.auth.FacebookAuthProvider();
const credential = provider.credential(accessToken);
console.log('FB credential: ' + credential)
firebase.auth().signInWithCredential(credential)
.then()
.catch((error) => {
console.log('Failed to sign in Firebase with Facebook. ' + error)
})
})
}
}
我还要注意Firebase的匿名&电子邮件/密码验证没有问题。
目前我的解决方法是从Swift进行Facebook登录,并使用网桥和RN NativeModules
返回RN中的用户对象。
有关我的项目的更多信息:
react-native:0.44.2
firebase:4.0.0
react-native-fbsdk:0.6.0
任何帮助将不胜感激!
答案 0 :(得分:0)
可能是一个长镜头,但这看起来非常类似于firebase JS SDK中的一个问题。解决方案是通过更改以下行来不创建FacebookAuthProvider的实例:
const provider = new firebase.auth.FacebookAuthProvider();
const credential = provider.credential(accessToken);
到此:
var credential = firebase.auth.FacebookAuthProvider.credential(accessToken);