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