Как вы включаете имя пользователя при хранении электронной почты и пароля с помощью Firebase (BaaS) в приложении для Android?

Метод 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);

Ответы

Ответ 1

Показать форму с тремя полями:

  • Имя пользователя
  • Адрес электронной почты
  • Пароль

Отправьте два последних метода Firebase createUser(). Затем в ответном завершении завершения храните всю информацию в базе данных Firebase.

var userName, emailAddress, password;

// TODO: read these values from a form where the user entered them

var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
ref.createUser({
  email    : emailAddress,
  password : password
}, function(error, authData) {
  if (error) {
    console.log("Error creating user:", error);
  } else {
    // save the user profile into the database so we can list users,
    // use them in Security and Firebase Rules, and show profiles
    ref.child("users").child(authData.uid).set({
      provider: authData.provider,
      name: userName
    });
  }
});

Дополнительную информацию см. на странице сохранение пользовательских данных в документах Firebase.

Ответ 2

Да, есть способ обновить информацию о пользователе в Firebase. Все, что вам нужно - прочитать эту статью в документах Firebase и реализовать описанный здесь метод Обновить информацию о пользователе

С помощью этого метода вы можете обновить свойство diplayName объекта FirabaseUser. Просто укажите имя пользователя для свойства displayName и внесите изменения.

Надеюсь, это поможет вам.

Ответ 3

Вот один из способов хранения зарегистрированных данных в базе данных,

Map<String, String> parameters = new HashMap<>();
FirebaseDatabase mFirebaseInstance;
parameters.put(Constant.TAG_USER, strUsrS.trim());
parameters.put(Constant.TAG_EMAIL, strEmailS.trim());
parameters.put(Constant.TAG_PASS, strPassS.trim());
//use this if needed(pushId)
String pushId = mFirebaseInstance.getReference(YOUR TABLE NAME).getRef().push().getKey();
parameters.put(Constant.TAG_KEY, pushId.trim());

mFirebaseInstance.getReference(YOUR TABLE NAME).getRef().child(strUsrS.trim()).setValue(parameters);

Попробуйте эту реализацию и выполните... Thankyou

Надеюсь, что вам известно о том, как изменить (создать) таблицу с обязательными полями в firebase.

Связанный вопрос и обсуждение с решениями