- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我应该如何将现有用户帐户与不同提供商但同一电子邮件地址关联起来?例如 Google 和 Facebook。
public void handleFacebookAccessToken(final AccessToken token, final Activity activity) {
Log.d(TAG, "handleFacebookAccessToken: " + token);
final AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
mAuth.signInWithCredential(credential)
.addOnCompleteListener(activity, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
Log.d(TAG, "signInWithCredential:success");
FirebaseUser user = mAuth.getCurrentUser();
authListener.updateSignedUI(user);
}
}
}).addOnFailureListener(activity, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "signInWithCredential:failure", e);
if (e instanceof FirebaseAuthUserCollisionException) {
handleLinkingFacebookUsers(credential, activity);
}
}
});
}
在下面的方法中,发生了“mAuth.getCurrentUser().linkWithCredential() NullPointerException”。
private void handleLinkingFacebookUsers(AuthCredential savedFBCredential, Activity activity) {
//AuthCredential credentialFacebook = FacebookAuthProvider.getCredential(token.getToken());
//AuthCredential credentialGoogle = GoogleAuthProvider.getCredential(googleIdToken, null);
mAuth.getCurrentUser()
.linkWithCredential(savedFBCredential) // THIS LINE TROWS NULL POINTER EXCEPTION
.addOnCompleteListener(activity, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Log.d(TAG, "linkWithCredential:success");
FirebaseUser user = task.getResult().getUser();
authListener.updateSignedUI(user);
} else {
Log.w(TAG, "linkWithCredential:failure", task.getException());
authListener.updateSignedUI(null);
}
// ...
}
});
}
Logcat:
com.google.firebase.auth.FirebaseAuthUserCollisionException: An account already exists with the same email address but different sign-in credentials. Sign in using a provider associated with this email address.
at com.google.firebase.auth.api.internal.zzdv.zza(com.google.firebase:firebase-auth@@19.2.0:42)
at com.google.firebase.auth.api.internal.zzfc.zza(com.google.firebase:firebase-auth@@19.2.0:19)
at com.google.firebase.auth.api.internal.zzes.zza(com.google.firebase:firebase-auth@@19.2.0:34)
at com.google.firebase.auth.api.internal.zzeu.zza(com.google.firebase:firebase-auth@@19.2.0:98)
at com.google.firebase.auth.api.internal.zzeu.zza(com.google.firebase:firebase-auth@@19.2.0:85)
如有任何建议,我们将不胜感激。谢谢。
最佳答案
mAuth.getCurrentUser()
返回 null FirebaseUser,因为调用它时没有用户登录。您的代码应在调用 FirebaseUser 对象上的方法之前检查这一点,如 getCurrentUser() 的 API 文档所示。 .
关于java - firebase.auth.FirebaseUser.linkWithCredential 抛出空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59806356/
我找到了这个 documentation这解释了如何将匿名用户与新注册用户联系起来,但我不明白它是如何工作的。 从解释中还发现here ,我得到了如下大图(如有错误请指正): 匿名用户登录:得到 us
我应该如何将现有用户帐户与不同提供商但同一电子邮件地址关联起来?例如 Google 和 Facebook。 public void handleFacebookAccessToken(final Ac
我使用电子邮件和密码创建了一个 Firebase Auth 用户 用户登录 用户决定在他们的个人资料中添加电话号码 我调用 verifyPhoneNumber 以接收代码,调用 PhoneAuthPr
我正在尝试为拥有公司电子邮件的用户设置自定义声明。当我使用 .onCreate() 触发器时,一切正常,但由于我匿名登录用户,我不知道如何在正确的时间触发此功能(在注册时,当电子邮件可用时)。 这是我
好的,这是我得到的错误: 1- 当应用以 phone1 启动时,用户匿名登录。 Uid:ABC ( link1 ) 2- phone1 用户决定使用 Google Sign-In 登录。 User 已
我是一名优秀的程序员,十分优秀!