文档在下面
创建用户
auth.signInWithCredential(authCredential)
.addOnSuccessListener {
callBack.invoke(FirebaseAuthResult.Success)
}.addOnFailureListener {
val authResult = it.factoryExceptionAuthResult()
callBack.invoke(authResult)
}
signInWithCredential
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'
body {
margin: 0;
padding: 0;
}
.items {
border-radius: 10px;
overflow: hidden;
padding: 6px;
border: 4px solid #000000;
width: auto;
display: inline-block;
margin: 50px;
}
.items img {
border-top-left-radius: 30px;
border-top-right-radius: 30px;
border-bottom-left-radius: 30px;
border-bottom-right-radius: 30px;
}
答案 0 :(得分:0)
这是预期的行为。如果当前电子邮件不存在凭证类型(Facebook,Google等),则将创建该凭证类型并创建用户会话。它还会覆盖和删除其他凭据类型,例如密码,如果您不希望这样做,可以检查Link Multiple Auth Providers to an Account
来了解如何链接和保留多个凭据提供者。
如果已经使用具有相同提供商类型的电子邮件创建了一个帐户,则抛出FirebaseAuthUserCollisionException
错误,例如,如果有Google提供者帐户,并尝试登录具有该提供商名称的其他Google提供者相同的电子邮件但凭据不同。
如果只想使用电子邮件/密码登录用户,则应使用signInWithEmailAndPassword
。
您还可以使用fetchSignInMethodsForEmail
来获取每封电子邮件的可用插入方法。