假设:
One account per email address
设置在火力认证功能
- 用户用匿名身份验证登录
的linkWithCredential
通常失败,FirebaseAuthUserCollisionException
,它可能发生或者是因为此凭据用于登录之前(您可以通过在Firebase控制台上搜索此电子邮件进行检查),或者此电子邮件帐户用于登录之前但与不同的提供商(例如作为一个用户登录使用谷歌登录[email protected]之前,现在他/她使用[email protected],但与Facebook登录)处理它,你需要2个步骤:
第1步:匿名帐户链接
private void linkWithAnonymousAccount(final AuthCredential credential) {
mFirebaseAuth.getCurrentUser().linkWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
getFirebaseToken();
} else {
Exception exception = task.getException();
if (exception instanceof FirebaseAuthUserCollisionException) {
signInWithFirebase(credential);
} else {
Utils.showDialogMessage(mContext, task.getException().getLocalizedMessage());
}
}
}
});
}
第2步:签订火力
private void signInWithFirebase(AuthCredential credential) {
mFirebaseAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
getFirebaseToken();
} else {
Utils.showDialogMessage(mContext, task.getException().getLocalizedMessage());
}
}
});
}
谷歌表示,该步骤2中合并,因为登录后,你需要获得以前的用户和PU的信息进入新用户。
我希望它有帮助。
好吧,让我试试这个 –
@MyWill你能解决这个问题吗? – Shubham
我还没有。你是? –