我遇到了Firebase无密码身份验证的问题。我的应用程序使用户可以使用电话号码或电子邮件链接登录。
虽然尝试signInWithEmailLink
成功登录的用户在firebase中的帐户丢失了其电话号码。
这是通过动态链接将用户从其邮件重定向到应用程序时执行的代码片段:
FirebaseDynamicLinks.getInstance()
.getDynamicLink(activity.getIntent())
.addOnSuccessListener(activity, pendingDynamicLinkData -> {
Uri deepLink = null;
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.getLink();
String emailLink = deepLink.toString();
String authEmail = activity.getPreferences(Context.MODE_PRIVATE).getString("link_auth_email",null);
if(authEmail != null){
Helper.showProgressDialog(activity);
firebaseAuth.signInWithEmailLink(authEmail,emailLink).addOnCompleteListener(activity,task ->{
if(task.isSuccessful()){
firebaseUser = task.getResult().getUser();
name = firebaseUser.getDisplayName();
phone = firebaseUser.getPhoneNumber();
email = firebaseUser.getEmail();
image = firebaseUser.getPhotoUrl();
firebaseUser.getIdToken(true).addOnCompleteListener(activity, task1 -> {
Helper.hideProgressDialog();
if(task1.isSuccessful()){
token = task1.getResult().getToken();
}else if(task1.getException() !=null){
Toast.makeText(activity, task1.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
});
}else{
Helper.hideProgressDialog();
Toast.makeText(activity, "Authentication failed. "+(task.getException().getMessage()==null?"":task.getException().getMessage()), Toast.LENGTH_SHORT).show();
}
});
}
}
else{
firebaseUser = firebaseAuth.getCurrentUser();
if(firebaseUser != null){
name = firebaseUser.getDisplayName();
phone = firebaseUser.getPhoneNumber();
email = firebaseUser.getEmail();
image = firebaseUser.getPhotoUrl();
firebaseUser.getIdToken(true).addOnCompleteListener(activity, task -> {
if(task.isSuccessful()){
token = task.getResult().getToken();
}else if(task.getException() !=null){
Toast.makeText(activity, task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
})
.addOnFailureListener(activity, e -> Toast.makeText(activity, "Link failure: "+e.getMessage(), Toast.LENGTH_SHORT).show());
Firebase依赖项:
implementation 'com.google.firebase:firebase-auth:19.3.2'
implementation 'com.google.firebase:firebase-dynamic-links:19.0.0'
implementation 'com.google.firebase:firebase-analytics:17.4.4'
这是因为我通过updateEmail
电话身份验证后通过方法而不是使用方式向注册用户添加了电子邮件linkwithcredential
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句