我正在尝试使用 Firebase 身份验证添加用户,它返回的 displayName 为 null,即使它在注册时通过 UI 请求它。有什么想法以及如何解决吗?这是我用来执行此操作的代码:
startActivityForResult( AuthUI.getInstance()
.createSignInIntentBuilder()
.setProviders(Collections.singletonList(new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build()))
.build(), RC_SIGN_IN);
并在结果活动中......
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)