【问题标题】:undefined is not an object firebase.auth.FacebookAuthProvider.credentialundefined 不是对象 firebase.auth.FacebookAuthProvider.credential
【发布时间】:2017-01-05 09:45:15
【问题描述】:

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

任何帮助都会很棒!

【问题讨论】:

  • 控制台中到底显示了哪个错误?
  • 将 firebase.auth.FacebookAuthProvider.credential(..) 替换为 provider.credential(..)
  • 升级到最新的 3.3.0 版本。上一版本的类型定义有问题。
  • @bojeil 将其升级到 3.3.0 .. 我刚刚做了“npm install firebase --save”并重新启动了模拟器。希望这是完整的过程...似乎没有工作..得到完全相同的错误
  • @Bommox 做到了,现在错误是“类型错误:未定义不是对象(评估'provider.credential')

标签: javascript facebook firebase react-native firebase-authentication


【解决方案1】:

我遇到了同样的问题,我有一个适合我的解决方案,但我不确定它是否适合你。

我通过一个单独的模块在一个名为 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。我真的不知道为什么会这样,我使用模块可能有问题

【讨论】:

  • 使用相同的确切过程遇到了相同的问题。奇怪...很高兴我遇到了这篇文章!谢谢!
  • 2020 年了,您的回答仍然有效。令人着迷!
  • 这也是我的问题。我没有使用 FirebaseService.js,而是在 App.js 中初始化了 Firebase,并将 npm 模块导入到我需要的任何地方。
猜你喜欢
  • 1970-01-01
  • 2019-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-14
  • 2015-07-16
  • 2020-07-16
  • 2018-08-28
相关资源
最近更新 更多