Метод Firebase createUser()
принимает поле электронной почты и пароля, но что, если я хочу также разрешить пользователю пользовательское имя пользователя, подобное Snapchat, Instagram, StackOverflow и т.д.? Есть ли способ изменить существующий метод, чтобы принять это поле, или мне нужно делать push и управлять этой информацией вручную, и если да, то каким образом?
Это моя первая попытка сохранить желаемую информацию пользователя:
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()
или push()
, чтобы записи не перезаписывались, если это приложение для социальных сетей?
Это моя вторая попытка:
@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);