1

我想實現在火力地堡用戶名註冊,因爲它只是給了我,就像是createUserWithEmailAndPassword()方法,但你不能創建一個用戶名,我不知道該怎麼辦呢?如何在Firebase中註冊用戶名?

以下是我的註冊碼,但我也想輸入一個可以使用它的用戶名,當用戶發佈一些東西時,例如getEmail()方法,也可以有一個getUsername()

auth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(RegisterActivity.this, new OnCompleteListener<AuthResult>() { 
      @Override 
      public void onComplete(@NonNull Task<AuthResult> task) { 

       progressBar.setVisibility(View.GONE); 

       if(!task.isSuccessful()){ 
        Toast.makeText(RegisterActivity.this, "Something went wrong :(" , Toast.LENGTH_LONG).show(); 
       }else{ 
        startActivity(new Intent(RegisterActivity.this, UsernameARegistrarActivity.class)); 
        finish(); 
       } 
      } 
     }); 
    } 

我的模型類:

public class User implements Serializable{ 
    private String user; 
    private String email; 
    private String Uid; 
    private String username; 

    public User() { 
    } 

    public User(String user) { 
     this.user = user; 
    } 

    public User(String user, String email, String uid, String username) { 
     this.user = user; 
     this.email = email; 
     Uid = uid; 
     this.username = username; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    public String getUser() { 
     return user; 
    } 

    public void setUser(String user) { 
     this.user = user; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 


    public String getUid() { 
     return Uid; 
    } 

    public void setUid(String uid) { 
     Uid = uid; 
    } 
} 

回答

1

如果您使用電子郵件/密碼身份驗證使用用戶名代替,你可以簡單的指數用戶的電子郵件地址,在九月路徑。然後,當用戶進行身份驗證,查找他們的電子郵件索引:

/user_to_email_index/$ USER_NAME/ https://www.firebase.com/docs/web/guide/login/custom.html

0

不能在火力用戶本身內存儲自定義數據,根據火力文檔

您無法直接將其他屬性添加到Firebase用戶對象;相反,您可以將其他屬性存儲在您的Firebase實時數據庫中。

由於每個註冊用戶都有一個唯一的ID,你可以用

FirebaseAuth.getInstance().getCurrentUser().getUid() 

一旦用戶登錄訪問,您可以創建使用您的用戶存儲每個用戶的數據的實時數據庫中的表類。然後,您可以使用上面的代碼片段爲Uid查詢登錄用戶的數據庫。

此處瞭解詳情: https://firebase.google.com/docs/auth/users

+0

我這樣做,但沒有辦法恢復的值,對於特定的用戶,我不知道用什麼代碼我試過做到這一點http://stackoverflow.com/questions/43444174/how-can-i-get-some-value-from-my-firebase – TheQuestionerXxx

1

試試這個,

DatabaseReference database = FirebaseDatabase.getInstance().getReference(); 
    User user = new User(firebaseUser.getUid(), 
      firebaseUser.getEmail(), 
      , firstName, photoURL); // add value as bean object 

    database.child(ARG_USERS) 
      .child(firebaseUser.getUid()) 
      .setValue(user) 
      .addOnCompleteListener(new OnCompleteListener<Void>() { 
       @Override 
       public void onComplete(@NonNull Task<Void> task) { 
        if (task.isSuccessful()) { 
       // user data updated in firebase 
         } 


      });