Среда: Firebase Unity 6.6.0, Unity Editor 2019.2.8f1
Я вижу ошибку "Этот клиент не имеет разрешения на выполнение этой операции." для новых анонимных пользователейкто аутентифицировал моменты раньше. Если я подожду 5-30 секунд и снова подключусь к тому же пользователю, проблема не появится.
Мои соответствующие правила безопасности базы данных реального времени
{
"rules": {
"gameSettings":{
".read": true,
".write": false
},
"userCompletedMissions": {
".write": false,
"$uid": {
".read": "$uid === auth.uid",
}
},
"userRanks": {
".write": false,
".read": "auth != null",
"english": {
".indexOn": ["rankOrderKey", "dRankOrderKey", "wRankOrderKey", "mRankOrderKey"],
},
"spanish": {
".indexOn": ["rankOrderKey", "dRankOrderKey", "wRankOrderKey", "mRankOrderKey"],
}
}
}
}
Мой проект Firebase является мобильнымигра. Игроки впервые создают учетную запись Anonymous FirebaseUser с await auth.SignInAnonymouslyAsync();
и сразу же прослушивают данные. Все, что требует ".read": true
, работает безупречно, но все, что связано с ".read": "auth != null"
и ".read": "$uid === auth.uid"
, отключает мои правила безопасности и выдает ошибку "Этот клиент не имеет разрешения на выполнение этой операции."
Например: FirebaseDatabase.DefaultInstance.GetReference("userRanks/english/SOME_USER_ID").ValueChanged += SomeFunction(...);
Понятно, что пользователь аутентифицирован, но средство проверки безопасности Firebase еще не знает. Могу ли я подождать, пока я на самом деле не аутентифицируюсь?
Редактировать: дополнительная информация
Что мне показалось интересным, так это журналы, полученные после следующих действий по воспроизведению: 1. МойВ Unity Game был аутентифицированный пользователь Firebase «Semadikp6FheE1FZMqi7MnCy0Iv2» в редакторе Unity на рабочем столе Mac OS 2. В консоли Firebase я перешел на вкладку «Аутентификация», нашел пользователя «Semadikp6FheE1FZMqi7MnCy0Iv2» и3. В следующий раз, когда я запустил свой Unity Editor, все ошибки «Этот клиент не имеет разрешения на выполнение этой операции» ссылались на удаленного пользователя «Semadikp6FheE1FZMqi7MnCy0Iv2» 4. Моя игра Unity допускает ошибки времени выполнения, перезагружая игровую сцену(Unity Editor Play Mode не останавливается). Когда сцена перезагружалась, она снова инициализировала все с нуля, включая вызовы Firebase API. Пользователь Firebase, на который он ссылался в этой попытке, был новым пользователем Firebase "UTc2NqwgYPTUFnnDCGSTLQm0yv63". Все работало гладко.
Это похоже на ошибку, связанную с кэшированием, либо в клиенте Unity Firebase, либо в службе Firebase.
Дополнительное объяснение: я неоднократно удалял учетную запись Anonymous, подключенную к моему устройству Unity Editor, в попытке воспроизвести ошибку, мешающую моему товарищу по команде запустить игру. Всякий раз, когда он запускает игру в редакторе Unity, он получает ошибки «Этот клиент не имеет разрешения на выполнение этой операции», которые не устраняются при последующих попытках. Он присоединился к этому проекту пару недель назад, и проекту уже 11 месяцев. Скорее всего, это невинная проблема, такая как «файл отсутствует» из проверки GIT. К сожалению, я не нашел никаких очевидных ошибок с моей стороны, и проблема остается нерешенной. Пожалуйста, порекомендуйте.