31

FirebasecreateUser()メソッドはメールとパスワードのフィールドを受け取りますが、Snapchat、Instagram、StackOverflow などのようなカスタム ユーザー名もユーザーに許可したい場合はどうすればよいでしょうか? そのフィールドも受け入れるように既存のメソッドを変更する方法はありますか、またはこの情報を手動でプッシュして管理する必要がありますか?

これは、目的のユーザー情報を保存する最初の試みです。

Firebase ref = new Firebase(firebaseURL);
ref.createUser(email, password, new Firebase.ValueResultHandler<Map<String, Object>>() {
@Override
public void onSuccess(Map<String, Object> result) {
System.out.println("Successfully created user account with uid: " + result.get("uid"));

//Sign user in
Firebase ref = new Firebase(firebaseURL);
ref.authWithPassword(email, password, new Firebase.AuthResultHandler() {

@Override
public void onAuthenticated(AuthData authData) {
System.out.println("User ID: " + authData.getUid() + ", Provider: " + authData.getProvider());

//Save user info
Firebase userRef = new Firebase(firebaseURL + "Users/");
User user = new User(username, authData.getUid());
userRef.setValue(user);

これは良い習慣ですか?ユーザー名と一緒に UID を保存すると、将来の変更などの処理に役立つ可能性があると考えました。また、これがソーシャル メディア アプリの場合、エントリが上書きされないようにupdateChildren()orメソッドを実装する必要がありますか?push()

これは私の2回目の試みです:

  @Override
  public void onAuthenticated(AuthData authData) {
  System.out.println("User ID: " + authData.getUid() + ", Provider: " + authData.getProvider());

  //Save user info and username
  Firebase ref = new Firebase(firebaseURL);
  Map<String, String> map = new HashMap<String, String>();
  map.put("email", email);
  map.put("username", username);
  map.put("provider", authData.getProvider());

  ref.child("users").child(authData.getUid()).setValue(map);
4

3 に答える 3