Я создаю приложение в Ionic Vue с Firebase в качестве бэкэнда. Я использую пользовательские утверждения Firebase для назначения ролей пользователей («платный пользователь» или «бесплатный пользователь»), и я настроил облачную функцию, которая без проблем назначает роли.
Теперь я хочу, чтобы мое приложение могло прослушивать изменения в пользовательских утверждениях, чтобы, если бесплатный пользователь станет платным, приложение узнало об этом в режиме реального времени. В настоящее время я получаю обновленное пользовательское утверждение только в том случае, если перезагружаю приложение с помощью onAuthStateChanged следующим образом:
onAuthStateChanged(auth, () => {
if (auth.currentUser) {
auth.currentUser.getIdTokenResult(true).then((idTokenResult) => {
console.info(idTokenResult);
auth.currentUser.subscriber = idTokenResult.claims.subscriber;
});
}
// Run app
});
Каков наилучший подход к прослушиванию изменений, когда пользователю назначается новая роль?
Я хочу, чтобы мое приложение могло прослушивать изменения в пользовательских утверждениях.
Это невозможно со службой аутентификации Fireabse. Вы должны реализовать свой собственный механизм: например, иметь документ Firestore для каждого пользователя и сохранить роль пользователя в этом документе. Таким образом, вы можете установить прослушиватель в реальном времени для документа Firestore пользователя и получать оповещения в интерфейсе о том, что роль пользователя изменилась.
Обратите внимание, что это будет реализовывать только систему оповещения. Вам все равно придется обновить токен с помощью firebase.auth().currentUser.getIdTokenResult()
(как показано в документе ), чтобы отразить новую роль в вашем внешнем интерфейсе.
Настройка прослушивателя Firestore в вашем магазине действительно является одним из возможных вариантов.
Разве нет Firebase Realtime Database
, а затем настроить Realtime Database triggers
для этой цели? Мне понадобится нечто подобное, поэтому и спрашиваю...
@SinisaM, если у вас есть вопрос, который не полностью связан с этим вопросом и ответом, я предлагаю создать новый вопрос в SO.
Большое спасибо за ваш ответ Рено. Будет ли лучшим подходом настроить прослушиватель в реальном времени через Vuex или Pinia, а затем использовать его на каждой странице, где мне нужно отслеживать изменения?