Comment puis-je vérifier que l'utilisateur existe dans Firebase auth dans Signup
Button via react native?
Ceci est mon code de page de connexion:
export default class Login extends Component {
constructor(props) {
super(props)
this.state = {
email: '',
password: '',
response: ''
}
this.signUp = this.signUp.bind(this)
this.login = this.login.bind(this)
}
async signUp() {
try {
await firebase.auth().createUserWithEmailAndPassword(this.state.email, this.state.password)
this.setState({
response: 'Account Created!'
})
setTimeout(() => {
this.props.navigator.Push({
id: 'App'
})
}, 500)
} catch (error) {
this.setState({
response: error.toString()
})
}
}
async login() {
try {
await firebase.auth().signInWithEmailAndPassword(this.state.email, this.state.password)
this.setState({
response: 'user login in'
})
setTimeout(() => {
this.props.navigator.Push({
id: 'App'
})
})
} catch (error) {
this.setState({
response: error.toString()
})
}
}
render() {
return (
<View style={styles.container}>
<View style={styles.containerInputes}>
<TextInput
placeholderTextColor="gray"
placeholder="Email"
style={styles.inputText}
onChangeText={(email) => this.setState({ email })}
/>
<TextInput
placeholderTextColor="gray"
placeholder="Password"
style={styles.inputText}
password={true}
secureTextEntry={true}
onChangeText={(password) => this.setState({ password })}
/>
</View>
<TouchableHighlight
onPress={this.login}
style={[styles.loginButton, styles.button]}
>
<Text
style={styles.textButton}
>Login</Text>
</TouchableHighlight>
<TouchableHighlight
onPress={this.signUp}
style={[styles.loginButton, styles.button]}
>
<Text
style={styles.textButton}
>Signup</Text>
</TouchableHighlight>
</View>
)
}
}
Vous devez utiliser l'API fetchSignInMethodsForEmail. Il prend un e-mail et renvoie une promesse qui se résout avec la liste des fournisseurs liés à cet e-mail s'il est déjà enregistré: https://firebase.google.com/docs/reference/js/firebase.auth.Auth .html # fetchsigninmethodsforemail
C'est très simple. Ajoutez a then () et catch () à votre méthode firebase dans la fonction signUp.
firebase.auth().createUserWithEmailAndPassword(this.state.email, this.state.password)
.then(()=>{
console.log('Signup successful.');
this.setState({
response: 'Account Created!'
})
})
.catch((error)=> {
console.log(error.code);
console.log(error.message);
});
Informations sur les différents codes d'erreur:
auth/email déjà utilisé
Lancé s'il existe déjà un compte avec l'adresse e-mail indiquée.
auth/email invalide
Lancé si l'adresse e-mail n'est pas valide.
auth/opération non autorisée
Lancé si les comptes de messagerie/mot de passe ne sont pas activés. Activez les comptes de messagerie/mot de passe dans la console Firebase, sous l'onglet Auth.
auth/mot de passe faible
Lancé si le mot de passe n'est pas assez fort.