'电子邮件格式错误'反应原生火力基地

时间:2017-12-09 09:09:56

标签: firebase react-native

这就是我所说的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>

但当它运行时,它会显示我的消息:

enter image description here

即使我没有在输入中输入任何电子邮件和密码并按提交,此错误也会弹出。

2 个答案:

答案 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);

的引用