我正在尝试创建一个使用“使用Google登录”按钮来触发的React应用程序signInWithPopup(provider)。但是,每次我调用new firebaseApp.auth.GoogleAuthProvider()控制台时都会返回错误。我只是想console.log()的result。
signInWithPopup(provider)
new firebaseApp.auth.GoogleAuthProvider()
console.log()
result
错误
未捕获的TypeError:_firebase_setup2.default.auth.GoogleAuthProvider不是构造函数
firebase_setup.js
import * as firebase from 'firebase'; const firebaseConfig = { apiKey: "AIzaSyAKlWtFZvbvuNy2qC68Xt5xzaTQVyy9l2o", authDomain: "doordash-ff045.firebaseapp.com", databaseURL: "https://doordash-ff045.firebaseio.com", storageBucket: "doordash-ff045.appspot.com", }; const firebaseApp = firebase.initializeApp(firebaseConfig); export default firebaseApp;
login.js
import React, { Component } from 'react'; import { browserHistory } from 'react-router'; import firebaseApp from '../../../services/firebase_setup'; export default class Login extends Component { componentDidMount() { firebaseApp.auth().onAuthStateChanged(user => { if (user) { console.log(user); browserHistory.push('/profile'); } }); } authenticate() { var provider = new firebaseApp.auth.GoogleAuthProvider(); provider.addScope('profile'); provider.addScope('email'); firebaseApp.auth().signInWithPopup(provider) .then(result => { console.log(result); }) } render() { return ( <div> <h1>Login Page</h1> <button onClick={this.authenticate.bind(this)}> Login with Google </button> </div> ); } }
如果您对此问题有任何见解,将不胜感激!我查阅了许多教程,但是在尝试声明provider变量时总是遇到相同的错误。
provider
您正在将名称空间与实例混合:firebaseApp仅仅是配置数据的容器。这不是您创建提供程序实例的方式。
firebaseApp
正确的方法是:
var provider = new firebase.auth.GoogleAuthProvider();