Firebase Facebook Twitter提供商getEmail null

时间:2017-02-21 19:30:09

标签: android authentication firebase firebase-authentication

我正在使用Firebase开发Android应用。我通过电子邮件,Facebook,Twitter帐户验证用户身份。问题是我拥有Facebook和Twitter获取电子邮件的权限。

我可以收到电子邮件,在Firebase控制台中,我可以看到Facebook和Twitter的相关电子邮件。但在应用程序中,我无法收到Facebook和Twitter帐户的电子邮件。我查看了用户的所有提供商数据。

如下:

user = mAuth.getCurrentUser();
//First provider is firebase all the time
user.getProviderData().get(1).getProviderId() = "twitter.com"
user.getProviderData().get(1).getEmail() = null
user.getEmail() = null

2 个答案:

答案 0 :(得分:2)

我发现问题Firebase可以选择“每个电子邮件地址一个帐户”。如果它被禁用,则用户(其他帐户将被链接)不会从提供者那里获得任何关于自身的信息。存储在提供程序中的所有提供程序数但是,如果您启用“每个电子邮件地址一个帐户”,它会在用户和user.getEmail()上写入相关信息,从提供商处返回电子邮件。

答案 1 :(得分:0)

这是Firebase

的正确方法
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

if (user != null) {
   //this will iterate through all providers
   user.providerData.forEach(function (profile) {

   console.log("Sign-in provider: "+profile.providerId);
   console.log("  Provider-specific UID: "+profile.uid);
   console.log("  Name: "+profile.displayName);
   console.log("  Email: "+profile.email);
   console.log("  Photo URL: "+profile.photoURL);

   //this will get the details of twitter. check "google.com" for google..
   if(profile.providerId == "twitter.com"){
      String twitterUid = profile.uid;
      String twitterEmail = profile.email; 
      etc...
   }

  });

}