在 GCP Compute 服务器上使用 GCE 元数据服务器通过服务帐户使用 Drive API
Use Drive API through a service account using GCE Metadata server at GCP Compute server
已使用具有这些云端硬盘文件访问权限的服务帐户通过云端硬盘 API 成功访问文件,方法是使用带有 .json 凭据的常规身份验证。
现在,我们要删除 .json 凭据的使用并依赖 GCE 元数据服务器,如此处所述https://github.com/googleapis/google-api-nodejs-client#:~:text=When%20running%20in%20GCP%2C%20service%20authorize%20is%20automatically%20provided%20via%20the%20GCE%20Metadata%20server。但是我一直收到 Insufficient Permission: Request had insufficient authentication scopes.
错误,即使我设置范围的方式与我对 .json 凭证所做的相同,请求成功。
我使用的 Node.js 代码是:
const google = require('@googleapis/drive') // v2.0.2
const auth = new google.auth.GoogleAuth({ scopes: ['https://www.googleapis.com/auth/drive'] })
const drive = google.drive({ version: 'v3', auth })
await drive.files.create(...)
是否可以使用 GCE 元数据令牌访问驱动器 API?
要访问云端硬盘,必须满足 2 个条件:
- 必须授予服务帐户访问云端硬盘的权限
- VM 必须是使用
--scopes https://www.googleapis.com/auth/drive
创建的
我怀疑你错过了 (2)。请注意,Allow full access to all Cloud APIs 不包括 Drive,因为 Drive 不是 Google Cloud API。
已使用具有这些云端硬盘文件访问权限的服务帐户通过云端硬盘 API 成功访问文件,方法是使用带有 .json 凭据的常规身份验证。
现在,我们要删除 .json 凭据的使用并依赖 GCE 元数据服务器,如此处所述https://github.com/googleapis/google-api-nodejs-client#:~:text=When%20running%20in%20GCP%2C%20service%20authorize%20is%20automatically%20provided%20via%20the%20GCE%20Metadata%20server。但是我一直收到 Insufficient Permission: Request had insufficient authentication scopes.
错误,即使我设置范围的方式与我对 .json 凭证所做的相同,请求成功。
我使用的 Node.js 代码是:
const google = require('@googleapis/drive') // v2.0.2
const auth = new google.auth.GoogleAuth({ scopes: ['https://www.googleapis.com/auth/drive'] })
const drive = google.drive({ version: 'v3', auth })
await drive.files.create(...)
是否可以使用 GCE 元数据令牌访问驱动器 API?
要访问云端硬盘,必须满足 2 个条件:
- 必须授予服务帐户访问云端硬盘的权限
- VM 必须是使用
--scopes https://www.googleapis.com/auth/drive
创建的
我怀疑你错过了 (2)。请注意,Allow full access to all Cloud APIs 不包括 Drive,因为 Drive 不是 Google Cloud API。