2016-08-09 53 views
0

我一直在嘗試讓本地和firebase的反應與海誓山盟一起工作,但無論我在哪裏看,我似乎都找到了過時的教程。 當我最終能夠初始化我的firebase對象時,我們在其他教程中使用的方法名稱並未使用我定義的對象進行定義。 我對此有點失落。 任何幫助將大規模讚賞。 謝謝。讓firebase登錄與本機反應工作

import React, { Component } from 'react'; 

import {View} from 'react-native'; 

import * as Firebase from 'firebase'; 

var firebaseConfig = { 
    apiKey: '....', 
    authDomain: '....', 
    databaseURL: 'https://....', 
    storageBucket: '...', 
}; 

Firebase.initializeApp(firebaseConfig, 'unique_id'); 

class LoginProcess extends Component { 
    constructor(props) { 
     super(props); 
     var fbRef = Firebase; 
    } 

    login(email, password) { 
     if (this.props.onLoginRequested) { 
      this.props.onLoginRequested(); 
     } 

     // Firebase.authWithPassword({ 
     // 'email': email, 
     // 'password': password 
     // }, 
     // (error, user_data) => { 
     // if (error) { 
     //  console.log('Login Failed. Please try again'); 
     // } 
     // else { 
     //  AsyncStorage.setItem('user_data', JSON.stringify(user_data)); 
     //  console.log(JSON.stringify(user_data)) 
     // } 
     // }); 
    } 

    render() { 
     return (<View/>) 
    } 
} 

module.exports = LoginProcess; 

回答

1

確定後玩了一番,我發現這是一種方式,我可以實現我所需要的。

import React, { Component } from 'react'; 

import {View} from 'react-native'; 

import * as Firebase from 'firebase'; 

var firebaseConfig = { 
    apiKey: '.....', 
    authDomain: '......', 
    databaseURL: 'https://......', 
    storageBucket: '......', 
}; 

const firebaseApp = Firebase.initializeApp(firebaseConfig, 'unique_id'); 

const auth = firebaseApp.auth(); 

class LoginProcess extends Component { 
    login(email, password) { 
     if (this.props.onLoginRequested) { 
      this.props.onLoginRequested(); 
     } 
     // auth.createUserWithEmailAndPassword // for signup 
     auth.signInWithEmailAndPassword(email, password) 
     .then((data) => { 
      if (this.props.onLoginSuccess) { 
       this.props.onLoginSuccess(data) 
      } 
     }) 
     .catch((error) => { 
      var errorCode = error.code; 
      var errorMessage = error.message; 

      if (this.props.onLoginError) { 
       this.props.onLoginError(error.code, error.message) 
      } 
     }); 
    } 

    render() {return <View/>;} 
} 

module.exports = LoginProcess; 
0

你已經找到了解決辦法,但我有它與終極版迷上了像這樣(還創建用戶,如果不存在的話)

export const loginUser = ({ email, password }) => { 
    return (dispatch) => { 

dispatch({ type: LOGIN_USER }); 

firebase.auth().signInWithEmailAndPassword(email, password) 
    .then(user => loginUserSuccess(dispatch, user)) 
    .catch(() => { 
    firebase.auth().createUserWithEmailAndPassword(email, password) 
     .then(user => loginUserSuccess(dispatch, user)) 
     .catch(() => loginUserFail(dispatch)); 
    }); 
}; 
}; 

const loginUserSuccess = (dispatch, user) => { 
    dispatch({ 
    type: LOGIN_USER_SUCCESS, 
    payload: user 
    }); 
    Actions.main(); 
}; 

我也想知道,如果你已經找到了方式來重新打開應用程序後堅持登錄?