我正在开发一个使用 Firebase` 作为 BaaS 的应用。
我已经集成了 Google 登录,我想获取用户的姓名、电子邮件地址和个人资料照片。
我已成功获取姓名和个人资料照片,但无法获取电子邮件地址。
这是 Google API 客户端设置:
/* Setup the Google API object to allow Google+ logins */
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API)
.addScope(Plus.SCOPE_PLUS_LOGIN)
.build();
这是我为获取用户数据所做的工作:
public void fetchDataFromGoogle() {
if (authData != null) {
if (authData.getProvider().equals("google")) {
googleName = (String) authData.getProviderData().get("displayName");
googleEmail = (String) authData.getProviderData().get("email");
googleImage = (String) authData.getProviderData().get("profileImageURL");
}
} else {
Toast.makeText(getBaseContext(), "error", Toast.LENGTH_LONG).show();
}
}
此代码已成功获取姓名和个人资料照片,但它为电子邮件地址返回 null
。
请让我知道这里出了什么问题。
最佳答案
不确定这是否是您的情况,但是您可以获取其他字段但 getEmail 返回 null 的一种情况是在 Firebase 控制台 > 身份验证 > 登录方法中您允许“使用相同的电子邮件地址创建多个帐户"
有一个 closed bug report已向谷歌提交:
When you go to the Auth > Sign-In Methods page of your project in the Firebase console. do you have One account per email address on or off? If you allow multiple accounts per email address, you will get null for FirebaseUser.getEmail()
您必须使用选项:“防止使用相同的电子邮件地址创建多个帐户”,否则 FirebaseUser.getEmail() 将返回 null
Ps:只有关闭该选项后首次登录的用户才能成功使用此方法
关于android - 无法通过 Firebase 获取用户的 Gmail 电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36353638/