繁体   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