无法在Android/iOS上从FirebaseAuthentication检索电子邮件
我在我的应用程序中使用FirebaseAuth进行Google/Facebook社交登录,我们允许用户在首次登录后更改其电子邮件,因为我们有自己的后端,具有用户管理功能,并且我们在注册表中预先填充此电子邮件 似乎突然间我无法从无法在Android/iOS上从FirebaseAuthentication检索电子邮件,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,我在我的应用程序中使用FirebaseAuth进行Google/Facebook社交登录,我们允许用户在首次登录后更改其电子邮件,因为我们有自己的后端,具有用户管理功能,并且我们在注册表中预先填充此电子邮件 似乎突然间我无法从FirebaseUser.getEmail()方法中检索用户的电子邮件地址。当我尝试使用Facebook/Google登录SDK检索电子邮件时,我可以检索它,因此这不是隐私问题。我的电子邮件已验证,所以这也不应该是问题 当我在FirebaseAuth登录后调用AuthRes
FirebaseUser.getEmail()
方法中检索用户的电子邮件地址。当我尝试使用Facebook/Google登录SDK检索电子邮件时,我可以检索它,因此这不是隐私问题。我的电子邮件已验证,所以这也不应该是问题
当我在FirebaseAuth登录后调用AuthResult.getAdditionalUserInfo().getProfile
时,我可以看到电子邮件
出现在地图中
我在这里读了一些问题,所以用户无法在Firebase控制台中看到电子邮件,但一切都是可见的。Firebase auth SDK的版本为16.1.0
。这种行为在我们的iOS应用程序中也是可见的,因此可能与Android无关,但仍然无法解释为什么会发生这种情况。用户表示将在登录时预填充它
我弄错了吗?或者,获得这封电子邮件的正确方式应该是什么,这样我就可以用它预填充我的表单了?@Billda
但是我们可以通过task.issusccessful()
方法获取电子邮件
只需在firebase的成功任务中使用以下代码段:
Map profile = task.getResult().getAdditionalUserInfo().getProfile();
objectemail=profile.get(“email”)代码>
虽然我们使用相同的电子邮件表单,但从用户处获取电子邮件
Facebook和Google登录帐户
通过这种方式,您可以获得特定用户的电子邮件
多谢各位。你能清楚地把遇到的问题贴在哪里吗
因为我们有很多可能将电子邮件设置为空。当使用“每封电子邮件多个帐户”设置时,顶级电子邮件user.getEmail()
对于非电子邮件(电子邮件/密码或电子邮件链接)帐户为空。如果提供程序存储在索引0中,则可以从user.getProviderData().get(0).getEmail()列表中获取电子邮件
这是因为顶级电子邮件是唯一的,没有两个帐户可以共享。因此,对于使用该电子邮件创建的任何其他OAuth帐户(如Facebook、Google等),顶级电子邮件为空。是的,我在问题中提到,我可以通过这种方式获取电子邮件,但您以后无法访问此数据(afaik),例如,当用户再次打开应用程序但未完成注册时,我仍然希望预填充表单,并希望避免将其保存在其他位置。您以后无法访问数据吗?您可以使用SharedReference存储数据,直到注册完成。我仍然不清楚您想要实现什么,请您简要解释一下?您是否使用Firebase控制台中的“每封电子邮件多个帐户”设置?@bojeil yes I amNice。我不得不遍历所有providerData并找到没有空电子邮件的providerData,但我最终在那里找到了它。谢谢