Реагируй на собственный огонь, войди в систему и создай пользователя с помощью пароля и пароля - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь создать простое приложение для входа в систему, когда вы пытаетесь войти в систему с учетной записью, которая не зарегистрирована, она должна просто создать новую учетную запись.

Как вы можете видеть в моей функции onButtonPress, моя проблемаэто то, что я пытаюсь заполнить, я получаю сообщение об ошибке.Что не имеет смысла, обычно, если я впервые заполнил адрес электронной почты и пароль, он должен просто зарегистрировать меня, но вместо этого я всегда получаю сообщение об ошибке.

Здесь вы можетесм. мой класс LoginForm

import React, { Component } from 'react';
import { Text } from 'react-native';
import firebase from 'firebase';
import { Button, Card, CardSection, Input } from './common';

class LoginForm extends Component {
state = { email: '', password: '', error: '' };

onButtonPress() {
    const { email, password } = this.state;

    firebase.auth().signInWithEmailAndPassword(email, password)
        .catch(() => {
            firebase.auth().createUserWithEmailAndPassword(email, password)
                .catch(() => {
                    this.setState({ error: 'Authentication failed' });
                });
        });
}

render() {
    return (
        <Card>
            <CardSection>
                <Input 
                    placeholder="user@gmail.com"
                    label="Email"
                    value={this.state.email}
                    onChangeText={email => this.setState({ email })}
                />
            </CardSection>
            <CardSection>
                <Input
                    secureTextEntry
                    placeholder="password"
                    label="Password"
                    value={this.state.password}
                    onChangeText={password => this.setState({ password })}
                />
            </CardSection>
            <Text style={styles.errorTextStyle}>
                {this.state.error}
            </Text>
            <CardSection>
                <Button onPress={this.onButtonPress.bind(this)}>
                    Log in
                </Button>
            </CardSection>
        </Card>
    );
}
}

const styles = {
errorTextStyle: {
    fontSize: 20,
    alignSelf: 'center',
    color: 'red'
 }
};

export default LoginForm;

Я также добавлю свой класс Input, вы никогда не знаете, что может быть не так ...:)

import React from 'react';
import { TextInput, View, Text } from 'react-native';

const Input = ({ label, value, onChangeText, placeholder, secureTextEntry }) 
=> {
const { inputStyle, labelStyle, containerStyle } = styles;
return (
    <View style={containerStyle}>
        <Text style={labelStyle}>{label}</Text>
        <TextInput 
            placeholder={placeholder}
            autoCorrect={false}
            secureTextEntry={secureTextEntry}
            style={inputStyle}
            value={value}
            onChangeText={onChangeText}
        />

    </View>
 );
};

const styles = {
inputStyle: {
    color: '#000',
    paddingRight: 5,
    paddingLeft: 5,
    fontSize: 18,
    lineHeight: 23,
    flex: 2,
    height: 40

},
labelStyle: {
    fontSize: 18,
    paddingLeft: 20,
    flex: 1

},
containerStyle: {
    height: 40,
    flex: 1,
    flexDirection: 'row',
    alignItems: 'center'
}
};

export { Input };

1 Ответ

0 голосов
/ 24 мая 2018

У вас нет .then (), только .catch ().Может быть, это может помочь?

firebase.auth().createUserWithEmailAndPassword(email, password).then()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...