Добавить дополнительную информацию о пользователе с помощью firebase

У меня встроенный firebase auth с моим Android-приложением. Допустим, у пользователя есть почта [email protected]. Я хочу добавить дополнительную информацию пользователю, например, имя пользователя, должность и адрес. Как я могу подключить пользовательскую таблицу auth с моим приложением Android для этого?

Нужно ли мне писать какие-либо API-интерфейсы?

Ответ 1

Сначала создайте каталог users в db. Затем, используя уникальный идентификатор пользователя, который вы получаете из процесса authn, храните информацию о пользователе в разделе users/{userid}.

Чтобы достичь этого, вам нужно войти в детали базы данных Firebase. См. Здесь: https://firebase.google.com/docs/database/android/save-data

Ответ 2

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

Первое, что вам нужно сделать, это обеспечить доступ пользователей к только тем данным, которые они хранят. Для этого перейдите к Database/Rules и измените свои правила на это:

{
"rules": {
  "my_app_user": {
    "$uid": {
      ".write": "auth != null && auth.uid == $uid",
      ".read": "auth != null && auth.uid == $uid"
     }
   }
 }
}

Затем, чтобы сохранить новые данные в базе данных Firebase, сделайте следующее:

        MyAppUser user = new MyAppUser();
        user.setAddressTwo("address_two");
        user.setPhoneOne("phone_one");
        ...

        mDatabaseReference.child("my_app_user").child(firebaseUser.getUid()).setValue(user).
                addOnCompleteListener(DetailsCaptureActivity.this,
                                   new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            ...

Имя дочернего элемента my_app_user должно совпадать как с вашим кодом, так и с правилами Firebase, иначе он не будет сохраняться.

Если все идет так, как предполагается, вы должны увидеть подробности в своей базе данных:

введите описание изображения здесь

Ответ 3

Вам нужно создать другую таблицу базы данных, например "user". При успешном подписании подписки в первый раз вам нужно создать новую строку в таблице пользователя.

public static void writeNewUser(DatabaseReference databaseReference, String userId, String name, String email, int accountType) {
    User user = new User(name, email, accountType);

    databaseReference.child("users").child(userId).setValue(user);
}

Вы можете указать https://github.com/firebase/quickstart-android/tree/61f8eb53020e38b1fdc5aaeddac2379b25240f3b/database