gpt4 book ai didi

android - Firebase Auth - GoogleAuthProvider 和 FacebookAuthProvider 正在取代 EmailAuthProvider

转载 作者:行者123 更新时间:2023-11-29 02:18:30 28 4
gpt4 key购买 nike

步骤

  • 使用 createUserWithEmailAndPassword 创建用户
  • auth.signOut()
  • 使用 FacebookAuthProvider 或 GoogleAuthProvider 的用户 signInWithCredential 以及在 createUserWithEmailAndPassword 中使用的相同电子邮件
  • 抛出 FirebaseAuthUserCollisionException(但这并没有发生,相反 signInWithCredential 成功并由 Facebook 或 Google 替换提供者

文档如下

https://developers.google.com/android/reference/com/google/firebase/auth/FirebaseAuth.html#signInWithCredential(com.google.firebase.auth.AuthCredential)

代码

创建用户

auth.createUserWithEmailAndPassword(email, password)
.addOnSuccessListener {
callBack.invoke(FirebaseAuthResult.Success)
}.addOnFailureListener {
val authResult = it.factoryExceptionAuthResult()
callBack.invoke(authResult)
}

signInWithCredential

auth.signInWithCredential(authCredential)
.addOnSuccessListener {
callBack.invoke(FirebaseAuthResult.Success)
}.addOnFailureListener {
val authResult = it.factoryExceptionAuthResult()
callBack.invoke(authResult)
}

implementation 'com.facebook.android:facebook-login:[5,6)'
implementation 'com.google.firebase:firebase-auth:19.1.0'
implementation 'com.google.android.gms:play-services-auth:17.0.0'

最佳答案

这是预期的行为。当当前电子邮件不存在凭证类型(Facebook、Google 等)时,将创建它并创建用户 session 。它还将覆盖和删除其他凭据类型,如密码,如果你不想这样,你可以检查 Link Multiple Auth Providers to an Account查看如何链接和保留多个凭证提供者。

FirebaseAuthUserCollisionException当已经有一个使用具有相同类型提供商的电子邮件创建的帐户时会抛出错误,例如,如果有一个 Google 提供商帐户并尝试登录具有相同电子邮件但不同凭据的其他 Google 提供商。

你应该使用 signInWithEmailAndPassword当您只想使用电子邮件/密码登录用户时。

您还可以使用 fetchSignInMethodsForEmail为每封电子邮件获取可用的登录方法。

关于android - Firebase Auth - GoogleAuthProvider 和 FacebookAuthProvider 正在取代 EmailAuthProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58220138/

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