Добавить дополнительную информацию о пользователе с помощью 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