正如标题中所说,无论我如何尝试登录,< code>emailVerified字段总是为假。这是故意的吗?到目前为止,我已经通读了整个firebase文档,似乎找不到任何关于这方面的信息。只是为了确保:我已经尝试了4个不同的验证帐户,结果总是一样的。知道是什么导致了这种行为吗?
我提供的解决方案可能对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()。
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中的验证电子邮件验证使用电子邮件和密码登录的用户?这背后的逻辑是如何工作的,它在代码中会是什么样子? 解决方案/帮助:对于那些仍在寻找答案的人,我找到了这篇文章 堆栈溢出 帖子
问题内容: 我检查了用户是否通过电子邮件验证。但是,无论我发送并确认了多少电子邮件,验证状态仍为。检查时我做错什么了吗? 问题答案: 我如何实现此功能的方法是添加一个 带有时间间隔的,它将检查用户是否已通过验证,然后在完成验证后终止计时器。 检查您当前用户状态的功能:
我检查了用户是否通过电子邮件进行验证。但是,无论我发送并确认了多少封电子邮件,验证状态仍然是。我在检查时是否做错了什么?
有问题的电子邮件是这样的: