API*_*API 8 curl oauth google-oauth google-cloud-platform gcloud
我有一个 Google Cloud 的 JSON 密钥文件,格式如下:
{
"type": "service_account",
"project_id": "###",
"private_key_id": "###",
"private_key": "-----BEGIN PRIVATE KEY-----\n
########################################
\n-----END PRIVATE KEY-----\n",
"client_email": "###@###.gserviceaccount.com",
"client_id": "###",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/###.gserviceaccount.com"
}
Run Code Online (Sandbox Code Playgroud)
我想access_token使用常规 curl 命令而不是GCP Console或安装gcloud 工具来获得一段时间。
我希望是这样的:
{
"type": "service_account",
"project_id": "###",
"private_key_id": "###",
"private_key": "-----BEGIN PRIVATE KEY-----\n
########################################
\n-----END PRIVATE KEY-----\n",
"client_email": "###@###.gserviceaccount.com",
"client_id": "###",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/###.gserviceaccount.com"
}
Run Code Online (Sandbox Code Playgroud)
我认为你不能只用curl,因为我相信它需要 JWT 身份验证 - 在文档中的行和我自己得到的错误消息之间阅读。
他们有oauth2l,它可以从service_account.jsonJWK生成 JWT (尽管它也应该与使用 PEM 或 CRT 的那个一起工作)。
不幸的是,他们没有直接的下载链接,但它不是太难以得到:
尝试这个:
安装去:
然后安装oauth2l:
go get github.com/google/oauth2l
go install github.com/google/oauth2l
Run Code Online (Sandbox Code Playgroud)
然后生成一个 JWT API Token:
oauth2l fetch --jwt --json ./service_account.json https://www.googleapis.com/auth/cloud-platform
Run Code Online (Sandbox Code Playgroud)
然后使用curl来获取你想要的 API:
token=$(oauth2l fetch --jwt --json ./service_account.json https://www.googleapis.com/auth/cloud-platform)
curl -X POST https://www.googleapis.com/dns/v1/projects/<project>/managedZones \
-H "Authorization: Bearer $token"
Run Code Online (Sandbox Code Playgroud)
这并不理想,但我认为这会以最少的抽象为您提供所需的东西。
当我弄清楚这一点时,我会尝试回帖。它需要某种工具,但我认为它甚至可以比oauth2l.
| 归档时间: |
|
| 查看次数: |
1855 次 |
| 最近记录: |