Firestore REST API与Firebase Id令牌的配合使用

3
我正在尝试使用从Auth SDK(ios)检索的令牌来创建新的firestore文档,但实际上我正在使用osx的FirebaseAuth,所以除了使用REST之外,我没有其他选择,因为osx没有FirebaseFirestore支持。
规则如下:
service cloud.firestore {
  match /databases/{database}/documents {    
    match /places {
      allow create, update, delete, read: if true;
    }
  }
}

获取令牌的方法

Auth.auth().currentUser?.getIDTokenForcingRefresh(true, completion ..

在我获取到令牌并将其转换为字符串后,我需要将其放入请求头Authorization: Bearer MY_RETRIEVED_TOKEN。

我请求的链接为:

https://firestore.googleapis.com/v1beta1/projects/MYPROJECTID/databases/(default)/documents/places?fields=fields&documentId=kk&key=API_KEY_FOR_WEB_APP_FROM_FIREBASE_PROJECT_SETTING

所以这里我正在从Firebase项目设置中传递Web的密钥

这个POST请求的主体内容

{
  "fields": {
    "nn": {
        "stringValue": "hhh"
    }
  }
}

但最终我在响应中收到了 403 错误。

{
  "error": {
    "code": 403,
    "message": "Missing or insufficient permissions.",
    "status": "PERMISSION_DENIED"
  }
}

我已经努力寻找错误,但是一直找不到。提前感谢您的帮助!

1个回答

1

我几天前也遇到了同样的问题。

你应该尝试修改你的规则,像下面的代码一样:

service cloud.firestore {
  match /databases/{database}/documents {    
    match /places/{document=**} {
      allow create, update, delete, read: if true;
    }
  }
}

在这种情况下,您可以为所有places文档设置规则。此外,您可以在规则模拟器中测试您的规则。这非常有效。
我希望这能帮到您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接