首页 文章

Firebase电子邮件验证无需创建和帐户

提问于
浏览
1

我正在创建一个可以发送通知的Android应用程序 . 用户可以选择使用电话号码或电子邮件帐户 .

我只需要验证用户输入的电子邮件,我不想 create 一个Firebase帐户

Firebase有一个 FirebaseUser#sendEmailVerification() ,但需要创建一个帐户 .

换句话说,我只想要电子邮件验证 to be the same as the Phone verification ,Firebase会向您发送代码或验证链接 .

有没有办法在不创建帐户的情况下利用Firebase电子邮件验证?

2 回答

  • 0

    对于任何试图完成相同的人来说,这就是我能够做到的 .

    转到Fibrebase控制台并在身份验证屏幕上启用 Email/PasswordAnonymous 登录方法

    Firebird Authentication screen

    然后在你的代码中,创建一个 Anonymous user (这就是诀窍,因为现在你有一个有效的用户来验证),更改电子邮件,然后发送验证 . 之后,重新加载Firebird用户并检查 isEmailVerified()

    mAuth = FirebaseAuth.getInstance();
    mAuth.signInAnonymously()
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "signInAnonymously:success");
                    if (mAuth.getCurrentUser().isEmailVerified() == false) {
                        mAuth.getCurrentUser().updateEmail("<MAIL YOU WANTO TO VERIFY HERE>");
                        mAuth.getCurrentUser().sendEmailVerification();
                        Log.e(TAG, "mail sent.....................................");
                    }
    
                    //updateUI(user);
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(TAG, "signInAnonymously:failure", task.getException());
                    Toast.makeText(getApplicationContext(), "Authentication failed.",
                            Toast.LENGTH_SHORT).show();
                }
            }
        });
    

    这是重装部分:

    mAuth.getCurrentUser().reload()
            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    Log.e(TAG,( mAuth.getCurrentUser().isEmailVerified() ? "VERIFIED" : "Not verified"));
                }
            });
    
  • 2

    电话号码验证和电子邮件验证都与Firebase身份验证帐户绑定 . 由于验证结果是用户帐户中的相关属性( email_verifiedphone_number )得到更新,因此无法将其用于此类帐户 .

相关问题