当前位置: 首页 > 知识库问答 >
问题:

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

柳奇思
2023-03-14

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

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

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

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

有没有一种方法可以在不创建帐户的情况下利用Firebase电子邮件验证?

共有2个答案

朱通
2023-03-14

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

柯昆杰
2023-03-14

对于任何试图实现同样目标的人来说,这就是我能够做到的。

转到 Fiberbase 控制台,在“身份验证”屏幕上启用电子邮件/密码匿名登录方法

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();
            }
        }
    });

这是重新加载的部分:

mAuth.getCurrentUser().reload()
        .addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                Log.e(TAG,( mAuth.getCurrentUser().isEmailVerified() ? "VERIFIED" : "Not verified"));
            }
        });
 类似资料:
  • 问题内容: 我检查了用户是否通过电子邮件验证。但是,无论我发送并确认了多少电子邮件,验证状态仍为。检查时我做错什么了吗? 问题答案: 我如何实现此功能的方法是添加一个 带有时间间隔的,它将检查用户是否已通过验证,然后在完成验证后终止计时器。 检查您当前用户状态的功能:

  • 我检查了用户是否通过电子邮件进行验证。但是,无论我发送并确认了多少封电子邮件,验证状态仍然是。我在检查时是否做错了什么?

  • 使用电子邮件和密码创建用户后,我正在调用我所知道的是,Firebase首先使用电子邮件和密码创建用户,然后向该用户发送验证邮件。 如果用户可以访问该邮件id并验证使。 但是,如果用户未能验证邮件或他/她无法访问提供的邮件,电子邮件ID将被锁定,因为帐户是使用该电子邮件ID创建的。 我的问题是,当用户无法验证电子邮件时该怎么办?

  • 是否可以在创建 Firebase 用户之前发送验证电子邮件并验证电子邮件?在我的代码中,我只能在从 Firebase 调用使用电子邮件和密码创建用户方法后发送电子邮件验证。即使我没有验证电子邮件,我仍然可以在 Firebase 控制台中看到该电子邮件的条目。

  • 我有一个关于firebase电子邮件验证工作的问题。 案例: 我的用户已登录我的网站(使用设备A)。 他们使用其他浏览器或设备(设备B)创建另一个帐户,但他们使用他已登录的浏览器和设备(设备A)打开电子邮件验证链接。 已经登录的用户(在设备A中)发生了什么?firebase是将它们签出还是只是验证新的电子邮件,但仍然与当前用户签入?

  • 我是Firebase的新手。我需要一种在注册过程中验证电子邮件地址的方法。未经验证,用户不应该自动登录。我可以添加什么代码来检查电子邮件是否经过验证。如果是,用户可以登录。如果不是,他们需要首先登录。请参阅下面的代码