2017-07-19 8 views
0

私はログインユーザアカウントシステムを作成しようとしています。何らかの理由で、ホーム画面にナビゲートした後に誤ったパスワードを認識していました。 (私が参照しているコードはlogin()関数です)。私はこれと 'console.log(errorCode);を判断するためにコンソールログステートメントを入れます。出力される最後のものです。誰かが私が書いたコードの論理を説明してください、なぜ不正なパスワードが最後にしか認識されないのですか? コンソール出力の順番は 「ロギングに」 「ログイン仕上げ」 「AUTH /間違ったパスワード 「ホームへ移動します」ですか? 本当にありがとうございました。あなたは、成功/エラーケースを扱う必要ネイティブFirebase認証エラーに反して

import React, {Component} from 'react'; 
import { 
    View, 
    Text, 
    TouchableHighlight, 
    TouchableOpacity, 
    TextInput, 
    KeyboardAvoidingView 
} from 'react-native'; 
import Input from './Input'; 
import Icon from 'react-native-vector-icons/MaterialIcons'; 
import {firebaseApp} from './App'; 
import {Tabs} from './Router'; 
import {StackNavigator, TabNavigator} from 'react-navigation'; 
import { Root } from './Router'; 

export default class LoginScreen extends Component { 
    constructor(props) { 
    super(props) 

    this.state = { 
     email: '', 
     password: '', 
     status: '', 
     success: '' 
    } 

    this.login = this.login.bind(this); 

    } 

    login(){ 
    console.log("Logging in"); 
    var errorCode; 
    var errorMessage; 
    firebaseApp.auth().signInWithEmailAndPassword(this.state.email, this.state.password).catch(function(error) { 
     errorCode = error.code; 
     console.log(errorCode); 
     errorMessage = error.message; 
    }); 

     if (errorCode === 'auth/wrong-password') { 
     console.log("Wrong password"); 
     alert('Wrong password.'); 
     } else { 
     console.log("Navigate to Home"); 
     this.props.navigation.navigate('Home'); 
     } 

     //console.log(error); 
     console.log("Login finish"); 


    /*firebaseApp.auth().signInWithEmailAndPassword(this.state.email, this.state.password).catch(function(error) { 
     console.log(error.code); 
     console.log(error.message); 
    }) 

    this.props.navigation.navigate('Home'); 

    console.log("Navigate to Home");*/ 
    } 

    render() { 
    var styles = require('./Styles'); 
    const {navigate} = this.props.navigation; 

    return(
     <KeyboardAvoidingView behavior='padding' style={styles.loginContainer}> 
     <Text style={styles.loginHeader}>PRINCETON EVENTS</Text> 
     <TextInput 
      style={styles.loginInput} 
      placeholder="Email" 
      autoCapitalize='none' 
      onChangeText={(text) => this.setState({email: text})} 
      value={this.state.email} 
      returnKeyType='next'/> 
     <TextInput 
      secureTextEntry 
      style={styles.loginInput} placeholder="Password" 
      onChangeText={(text) => this.setState({password: text})} 
      value={this.state.password} 
      autoCapitalize='none' 
      returnKeyType='go'/> 
     <TouchableOpacity style={styles.loginButton}> 
      <Text style={styles.loginText} onPress={this.login}>LOGIN</Text> 
     </TouchableOpacity> 
     <TouchableOpacity 
      style={styles.loginButton} 
      onPress = {() => navigate('CreateAccount')}> 
      <Text style={styles.loginText}> CREATE ACCOUNT </Text> 
     </TouchableOpacity> 
     </KeyboardAvoidingView> 
    ); 

} 
} 

答えて

0

ブロックをキャッチしてください。

firebaseApp.auth().signInWithEmailAndPassword(this.state.email, this.state.password) 
.then(function() { //Auth is successful 
    this.props.navigation.navigate('Home'); 
} 
.catch(function(error) { 
    errorCode = error.code; 
    errorMessage = error.message; 
    if (errorCode === 'auth/wrong-password') { 
    console.log("Wrong password"); 
    alert('Wrong password.'); 
    } else { 
    console.log("Navigate to Home"); 
    this.props.navigation.navigate('Home'); 
    } 
}); 
関連する問題