这就是我所说的firebase auth:
onButtonPress() {
const {email, password} = this.state;
console.log(email,password);
firebase.auth().signInWithEmailAndPassword(email, password)
.catch( (err) => {
console.log(err);
firebase.auth().createUserWithEmailAndPassword(email, password)
.catch( (err) => {
console.log(err);
this.setState({ error: err.message });
});
});
}
这是我的auth textInput:
<Card>
<CardSection>
<Input
secureTextEntry={false}
label={'E-mail'}
placeholder={'user@gmail.com'}
onChangeText={(email) => this.setState({email})}
value={this.state.email}
/>
</CardSection>
<CardSection>
<Input
secureTextEntry={true}
label={'Password'}
placeholder={'password'}
onChangeText={(password) => this.setState({password})}
value={this.state.password}
/>
</CardSection>
<Text style={styles.errorStyle}>{this.state.error}</Text>
<CardSection>
<Button onPress={this.onButtonPress.bind(this)}>
Log In
</Button>
</CardSection>
</Card>
但当它运行时,它会显示我的消息:
即使我没有在输入中输入任何电子邮件和密码并按提交,此错误也会弹出。
答案 0 :(得分:3)
由于 this.state.email 导致的默认空间而发生错误。使用 trim()并将其发送到服务器停止了错误的发生。这是一段代码。
const {email, password} = this.state;
this.setState({ error: '', loading: true });
firebase.auth().signInWithEmailAndPassword(email.trim(), password)
.then(this.onLoginSuccess.bind(this))
.catch( (err) => {
firebase.auth().createUserWithEmailAndPassword(email.trim(), password)
.then(this.onLoginSuccess.bind(this))
.catch(this.onLoginFailed.bind(this));
});
答案 1 :(得分:1)
您的代码错误,您的创建用户函数位于登录catch块中。分开它们,只需在创建用户时执行此操作:我的意思是注册。
firebaseRef.auth().createUserWithEmailAndPassword(this.state.email, this.state.password).then((userData) => {//userData}).catch((error) => {//error});
登录:
firebaseRef.auth().signInWithEmailAndPassword(this.state.email, this.state.password).then((userData) => {//userData}).catch((error) => {//error});
并且您在注册时已经登录
注意:firebaseRef是Firebase.initializeApp(config);
的引用