链接多个电话和电子邮件身份验证提供商

问题描述 投票:0回答:2

我是 firebase 新手,所以请耐心解答我的以下问题:

用户可以使用电话验证或电子邮件登录我的应用程序,但它会为同一用户生成两个不同的UID,我希望实现的是一个用户拥有一个UID可以使用电子邮件登录或通过电话号码登录(合并身份验证中的电话号码和电子邮件)。我可以在 Firebase 中实现这一目标吗?

谢谢你

android email firebase firebase-authentication
2个回答
4
投票

终于得到了预期的结果,谢谢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());
                     }
            }
        });
    }

0
投票
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());
                }
            }
        });
© www.soinside.com 2019 - 2024. All rights reserved.