【问题标题】:How to get UserName from FirebaseUser using authentication Uid in android?如何在 android 中使用身份验证 Uid 从 FirebaseUser 获取用户名?
【发布时间】:2018-04-11 06:10:37
【问题描述】:

我使用createUserWithEmailAndPassword() 注册了一个用户,并使用signInWithEmailAndPassword() 方法登录。现在,当我登录用户时,我需要获取存储在用户节点中的用户名 mobile。我可以获取每个用户的 UId,通过使用它如何在 android 中获取提到的信息?

【问题讨论】:

  • 你可以使用用户ID来获取用户节点!
  • 请发布您的数据库结构,以便我们为您提供帮助。
  • @AtifAbbAsi 在用户节点中只有按键,没有 UId。
  • 请发布您的数据库结构!
  • 用户-> 电子邮件、手机、密码、姓名、用户 ID。

标签: android firebase firebase-realtime-database firebase-authentication


【解决方案1】:

你所要做的就是使用UserProfileChangeRequest

 mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if(task.isSuccessful()){
                    // Sign in success
                    FirebaseUser user = mAuth.getCurrentUser();

                    UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
                        .setDisplayName(mName).build();

                    user.updateProfile(profileUpdates).addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {
            if (task.isSuccessful()) {
                Log.d(TAG, "User profile updated.");
             }
         }
     });


                }
    });

然后,要检索它,在需要的地方使用它,

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // Name, email address etc
    String name = user.getDisplayName();
    String email = user.getEmail();
}

或者您可以创建自己的自定义节点!

 String currentuser = FirebaseAuth.getInstance().getUid();

//save user node after successful signup.
      mFirebaseInstance.getReference("user").child(scurrentuser ).setValue(parameters);



    databaseReference = FirebaseDatabase.getInstance().getReference().child("user").child(currentuser );
    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {


      for(DataSnapshot userSnapShot: dataSnapshot.getChildren()){
            User user = userSnapShot.getValue(User.class);
        }
        }

【讨论】:

  • 我刚刚使用了 user.getDisplayName() 方法,但是它显示了 null 值。
  • 检查你是否在 user.updateProfile(profileUpdates).addOnCompleteListener 中获得成功
  • 好吧,成功了!!现在还有一件事如何设置电话号码等多个值?
猜你喜欢
  • 2017-08-19
  • 1970-01-01
  • 1970-01-01
  • 2020-06-10
  • 1970-01-01
  • 2013-11-09
  • 2011-06-25
  • 1970-01-01
相关资源
最近更新 更多