假設:
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
我還沒有。你是? –