2016-10-01 54 views
2
private void registerUser(){ 
String emailId = email.getText().toString().trim().toLowerCase(); 
String password = pass.getText().toString().trim(); 

firebaseAuth.createUserWithEmailAndPassword(emailId,password) 
     .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
      @Override 
      public void onComplete(@NonNull Task<AuthResult> task) { 
       progressDialog.dismiss(); 
       if(task.isSuccessful()){ 
        Toast.makeText(MainActivity.this,"Registration Successful",Toast.LENGTH_SHORT).show(); 

        //show chatroom 
        finish(); 
        startActivity(new Intent(getApplicationContext(),ProfileActivity.class)); 
       } 
       else{ 
        Toast.makeText(MainActivity.this,"Registration Failed. Please try again",Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 
} 

我想添加一个用户名或显示名称,但无法这样做。我尝试了一些东西,但仍然没有结果。请帮助我。本周我需要此功能进行项目提交。如何在Firebase中通过电子邮件+密码认证添加DisplayName? Android

+0

你不能做到这一点使用FirebaseAuth,如果你要存储用户的细节,你需要做手工,使用RealtimeDatabase –

+0

@SakchhamSharma有一种方法可以做到这一点,只是不直接创建新用户时。看到我的回答如下:) – edant92

+0

@ edant92我在创造时间 –

回答

2

这绝对是可能的,但不在用户创建方法中。

一旦你(在addOnSuccessListener可能)创建你的用户,你可以使用类似于下面的代码的东西来更新用户显示名称:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 

UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder().setDisplayName("John Smith").build(); 

user.updateProfile(profileUpdates); 

希望这有助于!

编辑:我之前说过要将代码添加到AuthStateListener,但是,弗兰克的建议将其放在addOnSuccessListener中会更好/更有意义,因此我已更新了答案以反映此情况。

+2

好的答案!我可能会在'addOnSuccessListener'中执行此操作,因为在创建帐户时通常只需设置名称。 –

0

我刚刚为我自己的实现(SDK版本4.4.1)调查了这个问题。我发现,如果你确定使用来自注册/登录的完全相同的task.result对象,而不是来自默认实例的对象,它可以完美地工作。

围绕着另一种工作帮助我是有一个电子邮件的参考表中的FB DB这样的:

{ "EmailRef": { "username1" : "[email protected] domain .com"}, {"username2" : "[email protected]"} } 

,然后由用户的电子邮件来查询用户名(从auth.CurrentUser.Email)采用的方法是这样的:

public static void GetCurrentUserName(Firebase.Auth.FirebaseUser user) 
{ 
    string message = ""; 
    DatabaseReference dbRef = FbDbConnection(); 
    FirebaseDatabase.DefaultInstance.GetReference("EmailRef").OrderByValue().EqualTo(user.Email).GetValueAsync().ContinueWith(task => 
    { 
     if (task.IsFaulted) 
     { 
      message = "GetCurrentUserName encountered an error: " + task.Exception; 
      ModalManager.BuildFireBaseDebugModal(message); 
      Debug.LogError(message); 
      return; 
     } 
     if (task.IsCanceled) 
     { 
      message = "GetCurrentUserName was canceled."; 
      Debug.LogError(message); 
      return; 
     } 
     if (task.IsCompleted) 
     { 
      foreach (DataSnapshot ss in task.Result.Children.AsEnumerable()) 
      { 
       try 
       { 
        if (ss.Value != null) 
        { 
         if (ss.Value.ToString() == user.Email) 
         { 
          message = "GetCurrentUserName was successful -- Email: " + user.Email + " Username: " + user.DisplayName; 
          Debug.LogError(message); 
         } 
        } 
        return; 
       } 
       catch (Exception ex) 
       { 
        message = "GetCurrentUserName Exception: " + ex; 
        Debug.LogError(message); 
        return; 
       } 
      } 
     } 

    }); 
} 
相关问题