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

Firebase认证:电子邮件验证总是假的

吴唯
2023-03-14

正如标题中所说,无论我如何尝试登录,< code>emailVerified字段总是为假。这是故意的吗?到目前为止,我已经通读了整个firebase文档,似乎找不到任何关于这方面的信息。只是为了确保:我已经尝试了4个不同的验证帐户,结果总是一样的。知道是什么导致了这种行为吗?

共有3个答案

堵凯
2023-03-14

Firebase提供了一个“验证”电子邮件地址的过程——但并不是对所有平台都适用。该功能不适用于Android...事实上,人们甚至无法查询电子邮件是否已经使用Android代码进行了验证(即使您使用了web或服务器代码来执行验证)。

“预期”过程通常是:

  1. 验证用户的电子邮件(使用任何提供商)
  2. 调用Firebase函数发送电子邮件进行验证。
  3. 通过使用客户端设置verified Check来响应验证链接,以查看电子邮件是否已被验证(用户可以在几天内处理)
  4. 在验证电子邮件之前,禁止在代码中使用适当的
    功能(例如链接不同的已验证
    提供商)

如果你目前使用的是Android客户端,你就不能启动第二步。

狄卓君
2023-03-14

我提供的解决方案可能对OP没用,因为它是去年被问到的,但希望它能帮助其他人。虽然我同意bojeil的回答,但对于真正的用户来说,在登录Facebook时验证他们的Facebook电子邮件地址有点烦人。

我今天在Android上遇到了这个问题,并应用了一个解决方法,因为< code>isEmailVerified()如果条件总是抛出false并将用户返回到登录页面,下面是从我的代码中提取的解决方法:

FirebaseUser  mUser = mAuth.getCurrentUser();


        if(!mUser.getProviders().get(0).equals("facebook.com")) {

            if (mUser.isEmailVerified()) {

                Intent mainIntent = new Intent(getActivity(), MainActivity.class);
                mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                startActivity(mainIntent);


            } else {

                Snackbar.make(getView().findViewById(R.id.loginLayout), "Please verify your account!", Snackbar.LENGTH_LONG).show();

            }

        }else{

            Intent mainIntent = new Intent(getActivity(), MainActivity.class);
            mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(mainIntent);

        }

第一个If语句检查用户是否使用Facebook登录,如果是,则将用户带到主活动,如果不是,则通常为电子邮件/密码用户调用isEmailVerified()。

闻人鸿文
2023-03-14

Google提供商电子邮件得到验证而Facebook电子邮件没有得到验证的原因是因为Google被认为是一个值得信赖的提供商(您可以使用Google创建电子邮件帐户)。让我们举另一个例子。如果您使用yahoo设置电子邮件,您将收到一封电子邮件myself@yahoo.com。如果您使用yahoo OAuth 2.0登录,您可以确定用户已得到验证,因为Yahoo是该电子邮件地址的实际所有者和发行者。但是,您也可以使用相同的电子邮件创建Facebook帐户或其他一些帐户,如github或twitter,并使用您的电话号码或其他方式进行验证。在这种情况下,如果您使用Facebook登录,电子邮件将不会被验证(Facebook不拥有或管理该电子邮件地址)。通常,如果您希望在这种情况下验证电子邮件,您必须发送电子邮件验证(目前是实验性的,仅在网络和iOS中可用,但最终应该会在android中使用)。

 类似资料:
  • 我正在实施firebase电子邮件验证,但是当用户收到电子邮件时,它会重定向到应用程序,这很好。当我尝试使用经过验证的电子邮件 始终返回 false。以下是我的代码:

  • 主要内容:创建用户,登录,注销在本章中,我们将向您介绍如何使用Firebase电子邮件/密码身份验证。在开始之前,需要设置登录方法,参考以下图所示 - 点击设置登录方法,然后选择电子邮件地址/密码,打开启用并保存,如下图所示 - 创建用户 要验证用户,可以使用方法。 示例 让我们来看看下面的一个例子。参考代码 - 接下来,您可以检查Firebase仪表板中的数据库,并查看用户是否已创建成功。如下所示,已经创建了一个用户账号 -

  • 如何使用firebase中的验证电子邮件验证使用电子邮件和密码登录的用户?这背后的逻辑是如何工作的,它在代码中会是什么样子? 解决方案/帮助:对于那些仍在寻找答案的人,我找到了这篇文章 堆栈溢出 帖子

  • 问题内容: 我检查了用户是否通过电子邮件验证。但是,无论我发送并确认了多少电子邮件,验证状态仍为。检查时我做错什么了吗? 问题答案: 我如何实现此功能的方法是添加一个 带有时间间隔的,它将检查用户是否已通过验证,然后在完成验证后终止计时器。 检查您当前用户状态的功能:

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

  • 有问题的电子邮件是这样的: