我是 firebase 新手,所以请耐心解答我的以下问题:
用户可以使用电话验证或电子邮件登录我的应用程序,但它会为同一用户生成两个不同的UID,我希望实现的是一个用户拥有一个UID可以使用电子邮件登录或通过电话号码登录(合并身份验证中的电话号码和电子邮件)。我可以在 Firebase 中实现这一目标吗?
谢谢你
终于得到了预期的结果,谢谢Mohammed Farhan一直陪着我。
我之前的错误是在链接多个身份验证提供商之前将短信代码发送到 Firebase,应该在从 Firebase 获取短信代码后直接调用下面的函数,一切都如预期的那样好!!
private void linkUserAuth(){
phoneCredential=PhoneAuthProvider.getCredential(verificationID,verificationCode);
firebaseAuth.getCurrentUser().linkWithCredential(phoneCredential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>(){
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
Log.d(TAG,"linkWithCredential:success");
FirebaseUser mergeAuthUser=task.getResult().getUser();
}else{
Log.w(TAG,"linkWithCredential:failure",task.getException());
}
}
});
}
FirebaseAuth auth = FirebaseAuth.getInstance();
PhoneAuthCredential phoneCredential = PhoneAuthProvider.getCredential(verificationId, verificationCode);
EmailAuthCredential emailCredential = EmailAuthProvider.getCredential(email, password);
auth.getCurrentUser().linkWithCredential(phoneCredential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Log.d(TAG, "Successfully linked phone number and email address.");
} else {
Log.w(TAG, "Error linking phone number and email address.", task.getException());
}
}
});