gpt4 book ai didi

firebase - 使用 signInWithEmailAndPassword 时在 auth/wrong-password 上获取 Firebase User.ProviderID

转载 作者:行者123 更新时间:2023-12-04 03:08:44 25 4
gpt4 key购买 nike

我有一个使用 Firebase 进行身份验证的应用程序。

我允许用户使用 Google/Facebook/Twitter 或使用电子邮件和密码登录。

此外,我已在 Firebase 中激活用户只能为每封电子邮件创建一个帐户。

我想涵盖以下情况:

用户注册 facebook 并使用他们的 facebook 电子邮件(例如 facebookuser@gmail.com)创建一个用户帐户。

几天后,用户回到应用程序,但忘记了他使用 facebook 注册并尝试使用他们的电子邮件地址登录 facebookuser@gmail.com和他们通常的密码。

firebase.auth().signInWithEmailAndPassword(email, password) 方法抛出 auth/wrong-password错误,因为没有使用 facebook 登录方法提供密码,但电子邮件确实存在。

而不是显示无用的“密码错误或电子邮件对应的帐户没有设置密码”。错误 我想检查哪个提供商用于注册并提醒用户改为使用提供商登录。

不幸的是,似乎不存在获取给定电子邮件的 User.ProviderID 或了解 auth/wrong-password 是否存在的方法。错误是因为用户输入了错误的密码,或者当用户使用 OAuthProvider 注册时没有首先给出密码。

最佳答案

好的,我错过了 fetchProvidersForEmail方法。

仅供引用:(不是我将使用的最终代码)

  • 用途 signInWithEmailAndPassword检查用户是否存在
  • 如果不是,则使用 createUserWithEmailAndPassword 创建它
  • 如果用户退出,它会尝试登录并捕获错误
  • 如果错误是 auth/wrong-password它检查 fetchProvidersForEmail如果用户已使用提供商进行注册
    firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
    var errorCode = error.code;
    var errorMessage = error.message;

    // User not found? Create user.
    if ( errorCode === 'auth/user-not-found' ) {
    firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
    if ( errorCode == 'email-already-in-use' ) {
    alert('You already have an account with that email.');
    } else if ( errorCode == 'auth/invalid-email' ) {
    alert('Please provide a valid email');
    } else if ( errorCode == 'auth/weak-password' ) {
    alert('The password is too weak.');
    } else {
    alert(errorMessage);
    }
    console.log(error);
    });
    // Wrong Password Error
    } else if ( errorCode === 'auth/wrong-password' ) {
    // Check if User has signed up with a OAuthProvider
    firebase.auth().fetchProvidersForEmail(email).then(function( result ){
    // … show OAuthProvider Login Button
    });
    alert('Wrong password. Please try again');
    } else {
    alert( errorMessage );
    }
    console.log( error );
    });
  • 关于firebase - 使用 signInWithEmailAndPassword 时在 auth/wrong-password 上获取 Firebase User.ProviderID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46887233/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com