Android firebase auth:链接匿名帐户与手动用户仍在firebase控制台上创建2个帐户

时间:2017-10-05 10:51:53

标签: android firebase-authentication

以下是重现问题的步骤:

  1. 创建匿名帐户

  2. 创建手动帐户

  3. 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. 将手动帐户与匿名帐户相关联
    2. 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'
      

      它适用于社交帐户,但不适用于手动帐户。请指教

1 个答案:

答案 0 :(得分:1)

您无法使用Firebase Auth链接2个现有帐户。 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)...