我使用 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 帐户登录时返回正确的电子邮件地址。我正在使用同一个电子邮件地址登录这两个帐户。我该如何解决这个问题?
最佳答案
可能有两个原因
用户有未确认的电子邮件。
用户可能已经使用手机号码注册。
不能保证您会收到来自 facebook 的电子邮件
关于java - 为什么登录 Facebook 帐户时用户电子邮件为空,但登录 Google 帐户时不为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53953522/