这是我的代码..它非常简单..只是试图允许用户通过Facebook进行身份验证,然后将其添加到Firebase系统! 我应该提到我正在使用React Native,我确实读过Firebase库的各个部分不能与React Native一起使用。
const auth = firebase.auth();
const provider = firebase.auth.FacebookAuthProvider;
LoginManager.logInWithReadPermissions(['public_profile'])
.then(loginResult => {
alert("login results")
if (loginResult.isCancelled) {
alert('user canceled');
return;
}
AccessToken.getCurrentAccessToken()
.then(accessTokenData => {
const credential = firebase.auth.FacebookAuthProvider.credential(accessTokenData.accessToken);
alert("Credential: " + credential )
return auth.signInWithCredential(credential);
})
.then(credData => {
console.log(credData);
alert("CRED data:::" + credData)
alert(firebase)
})
.catch(err => {
console.log(err);
alert("ERROR:::" + err)
alert(firebase)
});
});
我能真正想到的唯一原因是Firebase未定义或者没有完成初始化......虽然它似乎是......也许我可以提出某种承诺以确保它已初始化。 (关于如何做到这一点的任何想法?)
尽管firebase似乎已被初步化了..但我经历了api参考,并且无法找到任何理由.auth.FacebookAuthProvider.credential将不存在
任何帮助都会很棒!
答案 0 :(得分:4)
我遇到了同样的问题,我有一个适合我的解决方案,但我不确定它是否适用于你。
我在一个名为 FirebaseService.js
的文件中通过一个单独的模块实例化我的firebase类'use-strict';
const firebase = require('firebase');
const APP_BASE = 'https://your-unique-url.firebaseapp.com/'
const FIREBASE_CONFIG = {
apiKey: '[super_unique]',
authDomain: 'your-unique-url.firebaseapp.com',
databaseURL: APP_BASE,
storageBucket: 'your-unique-url.appspot.com',
};
export const Firebase = firebase.initializeApp(FIREBASE_CONFIG);
然后我通过导入它在我的代码中的其他地方使用它:
const { Firebase } = require ('./services/FirebaseService');
这似乎很好,直到我开始实施Facebook登录,并且当我开始遇到同样的问题时。
我必须在尝试使用facebook登录的屏幕中导入firebase。我没有使用自己的服务,而是使用了npm模块:
const firebase = require('firebase');
之后,我能够访问FacebookAuthProvider.credential。我真的不确定为什么会这样,我使用模块可能有问题