Свойства, которые вы можете сохранить в профиле пользователя, определяются Firebase Authentication. Вы не можете просто добавить дополнительные свойства по своему усмотрению. В лучшем случае Firebase просто игнорирует их, но, скорее всего, также явно отклоняет их (выдает ошибку).
Если вы хотите сохранить дополнительную информацию о пользователе, у вас есть две основные опции:
- Сохраните дополнительную информацию в качестве пользовательских утверждений в токене аутентификации пользователя.
- Сохраните дополнительную информацию во внешней базе данных, такой как Firestore и Realtime Database, которые являются частью Firebase.
Хотя хранение данных в качестве пользовательских утверждений довольно близко к тому, что вы хотите выполнить sh, вам нужно помнить о нескольких вещах:
- Пользовательские утверждения используются в целях авторизации, и по этой причине можно установить только из доверенной среды (например, компьютера разработчика, сервера, которым вы управляете, или облачных функций). Таким образом, вы не можете просто установить
role
из приложения, и вам потребуется отдельный процесс для добавления этой заявки. - После установки пользовательской заявки в профиле пользователя это может занять до часа это изменение видно в клиенте. Если вам это нужно раньше, вы можете заставить пользователя снова войти в систему или обновить sh его ID-токен.
- Пользовательские заявки отправляются при каждом запросе к ресурсам Firebase, и по этой причине они очень ограничен в размерах. Максимальный размер 1000 байтов для пользовательских утверждений для пользователя. Хотя ваш текущий
role
легко вписывается в это, он может ограничить то, что вы можете добавить позже.
Если вместо этого вы сохраните пользовательских данных во внешней базе данных , вы будете обычно объединяют его с другой информацией об этом пользователе в users
узел / коллекцию. Здесь вы должны сохранить документ / узел для каждого пользователя на основе UID этого пользователя, а затем информацию о его профиле.
Так что-то вроде:
users: {
uidOfAleksandra: {
username: "Aleksandra",
displayName: "Aleksandra Lastname",
role: "parent",
registrationDate: "2020-02-01"
},
uidOfPuf: {
username: "puf",
displayName: "Frank van Puffelen",
role: "child",
registrationDate: "2015-03-07"
},
}
Наличие этого списка профилей пользователей не только позволяет вам хранить дополнительную информацию для каждого пользователя, но также позволяет запрашивать этот список пользователей из вашего приложения, чего не позволяет API аутентификации из кода приложения.