连接FIrebase电子邮件和电话身份验证

时间:2019-12-11 15:44:15

标签: android firebase-authentication

Iam使用两个Firebase电子邮件/密码和phon身份验证创建了一个用于注册Iam的移动应用程序。流程是,当用户单击新帐户时,会出现一个屏幕,用户可以在其中输入电话号码并在验证成功后获取验证码它会转到新屏幕,在其中输入其他自定义字段的电子邮件和密码,因此在CreateUserWithEmailPassword上的onSuccess上,我将自定义字段的数据与电话号码一起推送到数据库,这也是我通过Otp活动的意图得到的,在此我验证了电话号码。 所有这些任务都可以正常工作,但是当Firebase在一次使用一次创建的用户号码进行身份验证时创建两个用户ID以及在使用电子邮件和密码进行身份验证时创建两个用户ID时,这会在以后的两个用户ID中引起问题。 我读过多篇文章,但不明白如何将两个用户ID连接到一个。 这是我的电话验证代码:

private void verifyCode(String code) {
        PhoneAuthCredential credential = PhoneAuthProvider.getCredential(verificationid, code);
        signInWithCredential(credential);
    }

    private void signInWithCredential(PhoneAuthCredential credential) {
        firebaseAuth.signInWithCredential(credential)
                .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            progressDialog.dismiss();
                            Intent intent = new Intent(OtpActivity.this, RegisterActivity.class);
                            intent.putExtra("mobileNumber", mobileNum);
                            startActivity(intent);

                        } else {
                            progressDialog.dismiss();
                            Toast.makeText(OtpActivity.this, task.getException().getMessage(), Toast.LENGTH_LONG).show();
                        }
                    }
            });

此处Iam使用emailpassword验证用户:

firebaseAuth.createUserWithEmailAndPassword(userEmail, userPassword).
                addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (!task.isSuccessful()) {
                            String error;
                            try {
                                progressDialog.dismiss();
                                throw task.getException();
                            } catch (FirebaseAuthWeakPasswordException e) {
                                progressDialog.dismiss();
                                error = e.getMessage();
                                HelperClass.showSnakbarMsg(rootView, error);
                                password.requestFocus();
                            } catch (FirebaseAuthInvalidCredentialsException e) {
                                progressDialog.dismiss();
                                error = e.getMessage();
                                HelperClass.showSnakbarMsg(rootView, error);
                                email.requestFocus();
                            } catch (FirebaseAuthUserCollisionException e) {
                                progressDialog.dismiss();
                                error = e.getMessage();
                                HelperClass.showSnakbarMsg(rootView, error);
                                email.requestFocus();
                            } catch (Exception e) {
                                progressDialog.dismiss();
                                error = e.getMessage();
                                HelperClass.showSnakbarMsg(rootView, error);
                            }
                        } else {
                            Toast.makeText(RegisterActivity.this, "Auth success", Toast.LENGTH_SHORT).show();
                            if (firebaseAuth.getCurrentUser() != null) {
                                userID = firebaseAuth.getCurrentUser().getUid();
                            }
                            pushData();
                        }
                    }
                });

这是在我的Firebase控制台中创建的图像用户ID

enter image description here

这是我要求获得用户支持的电子邮件和电话的要求。 所以我的问题是我应该同时链接电话号码和电子邮件的用户ID还是不会导致任何错误,所以我就这样留给他们。同样我必须按照此流程首先获取号码验证然后在其他自定义字段中注册用户。我是否可以使用此功能linkWithCredentials()链接用户? 谢谢

0 个答案:

没有答案