2016-09-08 21 views
6

signInWithPopup(provider)'u tetiklemek için "Google ile giriş" düğmesini kullanan bir React uygulaması oluşturmaya çalışıyorum. Ancak, new firebaseApp.auth.GoogleAuthProvider() numaralı telefonumu aradığım zaman konsolum bir hata verir. Ben sadece result çalışıyorum.React - Firebase - GoogleAuthProvider bir kurucu değil

hatası: Burada Uncaught TypeError: _firebase_setup2.default.auth.GoogleAuthProvider is not a constructor

benim kodudur

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> 

    ); 
    } 
} 

Bu konuyla ilgili herhangi bir anlayış için minnettarım! Çok sayıda öğretici aradım ama her zaman provider değişkenini bildirmeye çalışırken aynı hatayla karşılaştım.

+0

benzer bir sorunu bir süre önce vardı bu yapmalıydım, benim sorunum artık yapıcısı 'destekler eski belgeler ve Firebase API en yeni sürümü, kullanıyordum yeni Firebase ... ' – StackOverMySoul

+0

@Davidlrnt hızlı yanıt için teşekkürler! Yine de yeni dokümanları kullanıyorum. Bir ipucu için – szier

+0

'console.log (firebaseApp.auth.GoogleAuthProvider). –

cevap

14

Ad alanlarını örneklerle karıştırıyorsunuz: firebaseApp, yapılandırma verileri için yalnızca bir kapsayıcıdır. Bir sağlayıcı örneğini nasıl oluşturursunuz.

doğru yoludur:

var provider = new firebase.auth.GoogleAuthProvider(); 
+0

Bu işe yaradı! Çok teşekkür ederim! – szier

+0

Bu, kütüphane tepki-yerel-firebase ile çalışıyor mu? –

2

Bunu da ben "değil yapıcı" sorunu ve diğer bazı hatalar karşılaştım. Böyle bir şey yapıyordu:

var googleProvider = new myApp.auth.GoogleAuthProvider(); 

ben de böyle bir isimle Uygulamamı başlatılırken

var googleProvider = new firebase.auth.GoogleAuthProvider(); 

olmalıydı Ne zaman:

var myApp = firebase.initializeApp(appConfig, "App"); 

başlatmak vermedi DEFAULT uygulaması & bana daha fazla hata verdi. (Ben sadece bir app beri)

var myApp = firebase.initializeApp(appConfig);