如何将Firebase电话身份验证与电子邮件/密码身份验证相关联?

时间:2018-03-30 08:21:41

标签: android firebase firebase-authentication

我正在尝试创建一个应用程序,在用户输入他的电子邮件/密码后,他们将保存在firebase中,然后用户输入他的电话号码,在该电话号码上发送otp并且用户在验证后登录。我的问题是当这两个步骤都完成后,firebase将创建两个单独的帐户,其中一个帐户使用电话另外的电子邮件。请告诉我如何创建一个包含电子邮件/密码和电话的单一帐户。

1 个答案:

答案 0 :(得分:1)

由于您使用的是多个Firebase身份验证提供商,因此您需要对其进行关联,因此手机和电子邮件都将在单个帐户上创建。

首先,您可以获得凭据:

AuthCredential credential = EmailAuthProvider.getCredential(email, password);

然后使用linkwithCredentials()您将能够链接它们:

mAuth.getCurrentUser().linkWithCredential(credential)
    .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if (task.isSuccessful()) {
                Log.d(TAG, "linkWithCredential:success");
                FirebaseUser user = task.getResult().getUser();
                updateUI(user);
            } else {
                Log.w(TAG, "linkWithCredential:failure", task.getException());
                Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
                        Toast.LENGTH_SHORT).show();
                updateUI(null);
            }

            // ...
        }
    });

更多信息:

https://firebase.google.com/docs/auth/android/account-linking

相关问题