如何使用 gRPC 调用 Firestore

How to make a call to Firestore using gRPC

我正在尝试在 Elixir 中为 Google 的 Firestore API 构建一个 gRPC 客户端。

在开始编写一些代码之前,我认为首先使用 BloomRPC 来调试问题是明智的。

作为基础 url,我正在使用 https://firestore.googleapis.com 固定 rot 证书的地方。

作为 auth,我使用的是通过 oauth 获得的 access_token,具有以下 2 个范围:“https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/datastore” 作为授权传递 header:

{
    "Authorization": "Bearer 29ya.a0AfH6SMBDYZPsVgQv0PMqyGRXypc3DfWF_2jbvAJKMquTaryCvxEB7X1Rbprfk1Ebrwid2bXbcR3Aw-d1Tytlo_lThkyqRDRIbnSz5-nQ3xWklkmjyFMAuQtFCoz01hk3vbgBwd2gdbFNNWiOU_8NqPC_vElyz2-cQ34"
}

我回来了:

{
  "error": "3 INVALID_ARGUMENT: Missing required project ID."
}

很明显我应该以某种方式传递项目 ID,但我在文档中的任何地方都找不到它。有人有线索吗?

我刚刚弄清楚我做错了什么。

基本上我使用的 Bearer 令牌是正确的(通过 OAuth Playground 获得)。

诀窍是在请求的 parent 参数中指定 PROJECT_ID:

{
  "parent": "projects/[project-id]/databases/(default)/documents",
  "page_size": 10
}

我应该刚刚正确阅读 docs:)