无法在Android/iOS上从FirebaseAuthentication检索电子邮件

无法在Android/iOS上从FirebaseAuthentication检索电子邮件,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,我在我的应用程序中使用FirebaseAuth进行Google/Facebook社交登录,我们允许用户在首次登录后更改其电子邮件,因为我们有自己的后端,具有用户管理功能,并且我们在注册表中预先填充此电子邮件 似乎突然间我无法从FirebaseUser.getEmail()方法中检索用户的电子邮件地址。当我尝试使用Facebook/Google登录SDK检索电子邮件时,我可以检索它,因此这不是隐私问题。我的电子邮件已验证,所以这也不应该是问题 当我在FirebaseAuth登录后调用AuthRes

我在我的应用程序中使用FirebaseAuth进行Google/Facebook社交登录,我们允许用户在首次登录后更改其电子邮件,因为我们有自己的后端,具有用户管理功能,并且我们在注册表中预先填充此电子邮件

似乎突然间我无法从
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,但我最终在那里找到了它。谢谢