В моей базе данных правил безопасности для Firestore я использую пользовательскую проверку претензийОни отлично работают.В моем приложении я использую анонимную аутентификацию.Я следовал инструкции, и в моем первом представлении у меня есть:
[[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,NSError * _Nullable error) {
FIRUser *user = authResult.user;
NSLog(@"userId: %@", user.uid);}];
Это работает, и я получаю userId, который я также вижу в консоли. Затем я использую вызываемые облачные функции, которые добавляют один пользовательский запрос кпользователь, используя его UID.Это работает, потому что в моем завершении iOS я запрашиваю getIDToken:
[user getIDTokenResultWithCompletion:^(FIRAuthTokenResult *result,NSError *error) {
if (error != nil) {
}
else{
NSLog(@"claims: %@",result.claims);
//here I start my queries}];
В этом журнале я вижу, что мое пользовательское требование было применено, uid правильный.Только после этого я запускаю свои запросы к базе данных Firestore, но получаю ошибку, связанную с правилами безопасности: Code = 7 «Отсутствует или недостаточно разрешений».
Если я остановлю приложение ипросто перезапустите его с этими запросами - они работают отлично.Таким образом, нет никаких сомнений относительно сроков.Я даже отложил свои запросы на минуту после получения ответа от облачных функций (с заявкой, поданной), но в первый раз (без перезапуска приложения) запросы не проходят правила безопасности.
Можно ли обновить анонимного пользователяв клиенте без перезапуска приложения?
ОБНОВЛЕНИЕ Кажется, что это решается путем обновления модулей до последней версии.В моем случае у меня было 5.0.2 и обновлено до 5.0.5