firebase - 如何使用带有 API 密钥和服务帐户令牌的 CURL 访问 Firestore?
问题描述
我正在尝试使用终端会话中的 cURL 访问我的 Firestore 数据库。我已经阅读了 Firestore 的 REST API 文档和用于验证 Oauth 和服务帐户的身份验证文档。我在 API 仪表板中设置了服务帐户和 IAM 角色。我无法从文档中确定正确的路径和语法以及 API 密钥和 BEARER 令牌的用途。例如,我正在尝试接收 USER xyz 的 json 响应,文档字段 FNAME 存储在 PROJECT 测试项目中的 Firestore DATABASE(注意 - 我在哪里可以找到 databaseID?)。
这是文档中的 CURL 命令列表 -
curl \
'https://firestore.googleapis.com/v1beta1/%5BNAME%5D?key=[YOUR_API_KEY]' \
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
--compressed
curl --request POST \
'https://firestore.googleapis.com/v1beta2/%5BNAME%5D:exportDocuments?key=[YOUR_API_KEY]' \
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{}' \
--compressed
问题是 - 我对 [YOUR_API_KEY] 使用什么?[YOUR ACCESS TOKEN] 我用什么 -
我已经从我设置的服务帐户的凭据中尝试了以下操作
Service account - Key - 3......................e76
Unique ID - 1............39
获取 API KEY 和 ACCESS TOKEN 并返回 403 错误
我也有 Oauth 凭证 -
Client ID - 2.....113-95.......cpqrarqb.....qnrpc.apps.googleusercontent.com
Client Secret - L......lq
小路
https://firestore.googleapis.com/v1/projects/{project_id}/databases/{database_id}/collectionGroups/{collectionId}/fields/{field_id}
哪个也没用...
同样,我正在尝试使用 CURL 访问和读取数据并将数据写入我的 Firestore 数据库 - 作为我的 REST API 的代理。非常感谢任何帮助和帮助。
解决方案
根据您粘贴的 curl 命令,我了解到您希望将 Firestore 集合导出到 Cloud Storage 存储桶。此外,我了解您从 export 方法的 api explorer获得了 curl 命令。
要为 [YOUR_API_KEY] 提供一个 api 键值,首先需要在您的 GCP 项目中创建一个 api 键;这是过程:
- 转到凭据部分。
- 单击顶部名为“创建凭据”的选项。
- 选择 API 密钥。
- 复制并保存 Cloud Console 抛出的值(这是您的 api 密钥)。
如果您想了解更多有关 API 密钥的信息,可以访问此。
要提供 oauth 令牌值,您可以执行以下操作:
- 您可以打开Cloud Shell。
- 运行命令
gcloud auth application-default print-access-token
。 - 复制并保存 Cloud Shell 抛出的值(这是您的 oauth 令牌)。
请注意,有多种方法可以创建 oauth 令牌,但我指定的一种是最快的。你也可以使用 oauth playground来生成你的令牌;请记住,令牌的有效期为 60 分钟。
根据我使用的数据库 ID(默认),在这里我包括我的 curl 语句:
curl --request POST \
'https://firestore.googleapis.com/v1/projects/[PROJECT_ID]/databases/(default):exportDocuments?key=[YOUR_API_KEY]' \
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"collectionIds":["users"],"outputUriPrefix":"gs://[BUCKET_PATH]"}' \
--compressed
推荐阅读
- android - 如何通过材料设计达到以下效果
- javascript - 在 JavaScript 中单击时在动态创建的 div 中创建边框
- php - 如何获得数组中字段中的数字总和?我正在尝试获取字段 [2] 中的数字总和
- python - 可以在共享内存更新时在 python 中触发回调吗?
- c# - 无法使用 Microsoft Graph API 创建事件
- .net - Partialview 未渲染并在 .Net Core 中返回错误 500
- postgresql - 交叉表查询 Postgres 中的重复类别名称错误 42710
- android - 如何创建一个 recyleview 网格布局 Android 2 列?
- swiftui - 退出时返回两层的导航链接
- java - 在第二个 java 文件上使用 import 不允许访问其变量