Sno*_*all 7 firebase firebase-authentication
我有一个使用 Firebase 进行身份验证的应用程序。
我允许用户使用 Google/Facebook/Twitter 或使用电子邮件和密码登录。
此外,我在 Firebase 中激活了用户只能为每封电子邮件创建一个帐户。
我想介绍以下案例:
用户在 Facebook 上注册并获得使用其 Facebook 电子邮件 (eG facebookuser@gmail.com) 创建的用户帐户。
几天后,用户回到应用程序,但忘记了他使用 Facebook 注册,并尝试使用他们的电子邮件地址facebookuser@gmail.com和常用密码登录。
该firebase.auth().signInWithEmailAndPassword(email, password)方法会抛出auth/wrong-password错误,因为使用 facebook 登录方法没有给出密码,但电子邮件确实存在。
而不是显示无用的“密码错误或邮箱对应的账户没有设置密码”。错误 我想检查使用哪个提供商进行注册并提醒用户使用该提供商登录。
不幸的是,似乎不存在一种方法来获取给定电子邮件的 User.ProviderID 或了解是否auth/wrong-password由于用户输入了错误的密码而出现错误,或者在用户签名时首先没有给出密码使用 OAuthProvider 代替。
好吧,我已经忘记了fetchProvidersForEmail方法。
仅供参考:(不是我将使用的最终代码)
\n\nsignInWithEmailAndPassword检查用户是否存在createUserWithEmailAndPassword如果出现错误,则auth/wrong-password检查fetchProvidersForEmail用户是否使用提供商进行注册
firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {\n var errorCode = error.code;\n var errorMessage = error.message;\n\n // User not found? Create user.\n if ( errorCode === 'auth/user-not-found' ) {\n firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {\n // Handle Errors here.\n var errorCode = error.code;\n var errorMessage = error.message;\n if ( errorCode == 'email-already-in-use' ) {\n alert('You already have an account with that email.');\n } else if ( errorCode == 'auth/invalid-email' ) {\n alert('Please provide a valid email');\n } else if ( errorCode == 'auth/weak-password' ) {\n alert('The password is too weak.');\n } else {\n alert(errorMessage);\n }\n console.log(error);\n });\n // Wrong Password Error\n } else if ( errorCode === 'auth/wrong-password' ) {\n // Check if User has signed up with a OAuthProvider\n firebase.auth().fetchProvidersForEmail(email).then(function( result ){\n // \xe2\x80\xa6 show OAuthProvider Login Button\n });\n alert('Wrong password. Please try again');\n } else {\n alert( errorMessage );\n }\n console.log( error );\n});\nRun Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
7781 次 |
| 最近记录: |