我是本机的新手。我创建了一个处理登录和注册的表单。当用户输入电子邮件和密码时,如果电子邮件和密码有效,则用户会收到一条有关他已登录的消息,如果电子邮件地址不存在,则会创建一个新用户。但是,仅在创建用户工作时,登录无效
我的登录表格:
import React, { Component } from 'react';
import { Text } from 'react-native';
import firebase from 'firebase';
import { Button, Card, CardSection, Input, Spinner } from './common';
class LoginForm extends Component{
state={
email:'christian.lisangola@gmail.com',
password:'',
error:'',
loading:false
};
onButtonPress(){
const { email, password} = this.state;
this.setState({ error:'', loading:true });
//Catch c'est pour gerer le cas d'echec de la requete precedante
firebase.auth().signInWithEmailAndPassword(email, password)
.then( this.onLoginSuccess.bind(this) )
.catch( () => {
firebase.auth().createUserWithEmailAndPassword(email, password)
.then(this.onLoginSuccess.bind(this))
.catch( this.onLoginFailed.bind(this) );
});
}
onLoginSuccess(){
this.setState({
error: '',
loading: false,
email : '',
password :''
});
console.log("Logged succefully")
}
onLoginFailed(error){
this.setState({
error: 'Authentication Failed.',
loading: false
});
console.log(error.code);
console.log(error.message);
}
renderButton(){
if(this.state.loading){
return <Spinner spinnerSize="small" />;
}
return (
<Button onPress={this.onButtonPress.bind(this)}>Login</Button>
)
}
render(){
return (
<Card>
<CardSection>
<Input
secureTextEntry={ false }
placeholder='user@gmail.com'
label='Email'
value={ this.state.email }
onChangeText={ emailValue => this.setState({email: emailValue}) }
/>
</CardSection>
<CardSection>
<Input
secureTextEntry={ true }
placeholder='password'
label='Password'
value={ this.state.password }
onChangeText={ pwdValue => this.setState({password: pwdValue}) }
/>
</CardSection>
<Text style={ styles.errorTextStyle }>{ this.state.error }</Text>
<CardSection>
{ this.renderButton() }
</CardSection>
</Card>
);
}
}
我得到的错误代码是auth/network-request-failed
,错误消息是A network error (such as timeout, interrupted connection or unreachable host) has occurred.
,但是我的设备可以连接互联网。添加新用户可以正常工作。
我已按照此链接中的官方文档中所述进行了所有操作:https://firebase.google.com/docs/auth/web/password-auth
答案 0 :(得分:0)
我遇到了同样的错误,经过一番挖掘,我找到了原因:
emulator time issue
之所以会这样,是因为emulator
和network
的时间不同。
如果您手动将emulator
时间更改为与network
时间相同,那么它将起作用,至少对我有用。