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

Nic*_*kPR 5 android firebase firebase-authentication

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

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

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

换句话说,我只希望电子邮件验证与电话验证相同,其中 Firebase 只会向您发送代码或验证链接。

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

Nic*_*kPR 5

对于任何试图完成相同任务的人,这就是我如何做到的。

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

Firebase 身份验证屏幕

然后在你的代码中,创建一个匿名用户(这就是诀窍,因为现在你有一个有效的用户来验证),更改电子邮件,然后发送验证。之后,重新加载 Firebase 用户并检查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();
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

这是重载部分:

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