我正在使用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
答案 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...
}
});
}