java - 为什么登录 Facebook 帐户时用户电子邮件为空,但登录 Google 帐户时用户电子邮件不为空?
问题描述
我使用 Firebase 允许用户使用他们的 Facebook 帐户或 Google 帐户登录。我已允许在同一个电子邮件地址下创建多个帐户。
这是在使用 Facebook 帐户成功登录后将用户发送到下一个屏幕的方法:
private void handleFacebookAccessToken(AccessToken token) {
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Intent intent = new Intent(MainActivity.this, Profile.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
overridePendingTransition(0, 0);
}
}
});
}
如果用户使用他们的 Google 帐户登录,这是将用户发送到下一个屏幕的方法:
private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Intent intent = new Intent(MainActivity.this, Profile.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
overridePendingTransition(0, 0);
}
}
});
}
所以一切正常,除了我使用 时user.getEmail()
,它在使用我的 Facebook 帐户登录时返回 null,但在使用我的 Google 帐户登录时返回正确的电子邮件地址。我在同一个电子邮件地址下登录这两个帐户。我该如何解决这个问题?
解决方案
可能有2个原因
用户有未确认的电子邮件。
用户可能已使用手机号码注册。
不保证您会收到来自 Facebook 的电子邮件
推荐阅读
- python - 在满足特定条件之前,如何对数据框中的值进行滚动累积?
- html - 将标签值从 HTML 传递到 TS
- azure - 天蓝色表单识别器服务 - docker-compose 问题
- python - 随机分布多个元素,但加权到一个列表中,该列表应该只包含整数
- php - PHP - 通过 foreach 循环继承
- python - setup.py 中的 Python 可重用包
- python - Pandas to_datetime 减速脚本
- intellij-idea - 彩色标记从 intellij 滚动条中消失
- sql - 子查询有效地工作,直到我添加 order by 和 limit
- asp.net - EF Core 多对一:添加新元素会删除所有其他条目