在过去 2 天中,我们的移动应用程序的 Play 商店用户一直收到以下 Firebase 权限错误,即使我上次更新 Firebase 规则是在一周前。如果规则有问题,错误应该是从上周五开始的。被拒绝访问的“备份”的规则在过去两年中没有改变,并且到目前为止一直运行良好:
[firebase_database/permission-denied] 客户端无权访问所需数据。
我尝试重新创建该错误,但仅当通过 Google Play 商店安装该应用程序时才会发生该错误。否则,可以毫无错误地访问数据。
以下是我正在使用的 Firebase 规则:
"rules": {
"backups": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
},
"backups_secondary": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
},
"profiles": {
".read": "auth != null",
"$uid": {
".write": "$uid === auth.uid"
},
".indexOn": ["timestamp", "lastUpdateTimestamp"]
}
}
}
我认为该问题可能是由于 $uid 和 auth.uid 之间不匹配造成的,但用户仍然可以更新其“个人资料”数据并读取“个人资料”数据。即使我设置对“备份”的访问权限以便任何人都可以访问它(如下所示),我仍然收到权限错误。
"rules": {
"backups": {
".read": true,
".write": true
},
"backups_secondary": {
".read": true,
".write": true
},
"profiles": {
".read": "auth != null",
"$uid": {
".write": "$uid === auth.uid"
},
".indexOn": ["timestamp", "lastUpdateTimestamp"]
}
}
}
Play商店用户只有在规则完全开放的情况下才能访问“备份”:
"rules": {
".read": true,
".write": true
}
}
其他注意事项:
只需检查它是否是最新的,或者更新依赖项并确保生产中的 firebase 而不是测试中的