我正在尝试使用 Firebase 身份验证添加用户,它返回 displayName 为 null,即使它在注册时通过 UI 请求它。任何想法为什么以及如何解决?这是我用来执行此操作的代码:
startActivityForResult( AuthUI.getInstance()
.createSignInIntentBuilder()
.setProviders(Collections.singletonList(new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build()))
.build(), RC_SIGN_IN);
并在结果 Activity 中......
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
// user is signed in!
//save user
saveUser();
startMainActivity();
return;
}
保存用户代码如下:
private void saveUser(){
FirebaseUser fUser = FirebaseAuth.getInstance().getCurrentUser();
final User user = new User();
if (fUser.getDisplayName() != null) {
user.setUserName(fUser.getDisplayName());
} else {
Log.e("FB_info", "User has no display name");
}
user.setUserEmail(fUser.getEmail());
final DatabaseReference userRef = FirebaseDatabase.getInstance().getReference(FirebaseRefs.getUsersRef()).child(fUser.getUid());
userRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(!dataSnapshot.exists()){
userRef.updateChildren(user.toMap());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
知道为什么显示名称返回 null 吗?
最佳答案
所以这似乎是(现在已知的)Firebase 本身的错误(不是 Firebase-UI)。该错误似乎是在 Firebase Android SDK v9.8.0
版本中引入的。目前的解决方法之一是强制用户在系统注册后注销并重新登录。另一个涉及将 FirebaseUI 降级 到使用旧 Firebase SDK 版本的版本。
来源:https://github.com/firebase/FirebaseUI-Android/issues/409
关于android - 使用 Firebase Auth 创建用户后 displayName 显示为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40683510/