2016-10-01 9 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私は創造の時にmentを –

答えて

2

これは間違いなく、ユーザー作成方法ではない可能性があります。あなたが更新するために、次のコードのようなものを使用することができます(addOnSuccessListenerでおそらく)あなたのユーザーを作成したら

ユーザーは、DisplayName:このことができます

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

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

user.updateProfile(profileUpdates); 

希望を!

編集:以前はAuthStateListenerにコードを追加すると言いましたが、以下のFrankの提案は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; 
       } 
      } 
     } 

    }); 
} 
関連する問題