我想使用Google的Firestore来保存用户数据,而后端使用PHP。到目前为止,我配置的访问规则如下:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
我遵循了谷歌的官方文档,我的代码如下所示:
$firestore = new FirestoreClient([
'projectId' => env('firebase.project.id'),
'keyfileName' => env('firebase.key.file')
]);
$collection = $firestore->collection('users');
$document = $collection->document($uid);
//this one triggers the permission error
$secret_key = $document->snaphot->get('secret_key');
然后我得到:
PERMISSION_DENIED: Missing or insufficient permissions.
我尝试像这样修改我的规则:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}
没有区别。顺便说一句,firebase 身份验证部分有效,我可以创建用户并让他们登录。此外,如果我关闭规则,错误就会消失,但显然这不是解决方案。我正在使用 CodeIgniter 4.5.5 和最新的
google/cloud-firestore
。当我回到办公室时,我可以链接所有依赖项。现在,我将不胜感激任何帮助。
我不知道拼写错误是否存在于您的实际代码中,但我很确定它应该是
$secret_key = $document->snapshot->get('secret_key');
,而不是$document->snaphot
。