开发者问题收集

undefined 不是对象 firebase.auth.FacebookAuthProvider.credential

2016-08-29
9456

这是我的代码... 它非常简单... 只是试图让用户通过 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 不存在

任何帮助都很棒!

1个回答

我遇到了完全相同的问题,我有一个对我有用的解决方案,但我不确定它是否也适用于您。

我通过一个单独的模块实例化了我的 firebase 类,该模块位于名为 FirebaseService.js

'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 了。我真的不确定为什么会出现这种情况,可能是我使用的模块有问题

Felipe
2016-09-06