簡體   English   中英

Android Firebase身份驗證:將匿名帳戶與手動用戶鏈接仍在Firebase控制台上創建2個帳戶

[英]Android firebase auth: Link anonymous account with manual user still creating 2 accounts on firebase console

下面是重現該問題的步驟:

  1. 創建一個匿名帳戶

  2. 創建一個手動帳戶

mFirebaseAuth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(this, task - > {
            if (task.isSuccessful()) {
                AuthCredential credential = EmailAuthProvider.getCredential(email, password);
                linkWithAnonymousAccount(credential);
            } else {
                hideProgressDialog();
                String msg = task.getException().getLocalizedMessage();
                Utils.showDialogMessage(mContext, msg);
            }
        });
  1. 將手動帳戶與匿名帳戶關聯
private void linkWithAnonymousAccount(final AuthCredential credential) {
    mFirebaseAuth.getCurrentUser().linkWithCredential(credential)
        .addOnCompleteListener(this, task - > {
            if (task.isSuccessful()) {
                callUpdateUserApi();
            } else {
                hideProgressDialog();
                Utils.showDialogMessage(mContext, task.getException().getLocalizedMessage());
            }
        });
     }

當前結果:在Firebase控制台上創建了2個帳戶,匿名帳戶和手動帳戶

預期結果:匿名帳戶應與手動帳戶合並。

Firebase版本

compile "com.google.android.gms:play-services-auth: '11.4.2'

它適用於社交帳戶,但不適用於手動帳戶。 請指教

您無法將2個現有帳戶與Firebase Auth關聯。 2個憑據之一必須是新的,並且尚未在Auth數據庫中。 您似乎正在登錄一個匿名用戶並創建一個電子郵件/密碼用戶,然后嘗試鏈接它們。 這將失敗,因為您無法鏈接2個具有不同UID的現有用戶。 在這種情況下,您必須手動將數據從一個復制到另一個,然后刪除過時的用戶。

您應該做的不是createUserWithEmailAndPassword signInAnonymously匿名用戶,然后直接在電子郵件/密碼憑證鏈接到這一點。

// Initialize the email/pass credential and directly link it to the
// current anonymous user already signed in.
AuthCredential credential = EmailAuthProvider.getCredential(email, password);
mFirebaseAuth.getCurrentUser().linkWithCredential(credential)...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM