Golang 和 gcloud API:如何获取授权令牌

Golang and gcloud API: how to get an auth token

因为GoogleAutoML没有golang客户端,我只好使用AutoML http客户端。为此,需要来自 google 的身份验证令牌,该令牌来自 运行 以下 cli 命令:

gcloud auth application-default print-access-token

我目前正在使用凭证 json 文件验证我的 Golang 服务器,该文件也可以访问 AutoML(示例用法)

storageClient, err := storage.NewClient(ctx, option.WithCredentialsFile(gcloudCredsJSONPath))

我的问题是:如果我有 JSON 凭据文件,我如何从 Golang Google 客户端获取授权令牌?这甚至可能吗?

感谢您的帮助!

您只能对某些 Google 云 API 使用 API 代币。 Google Cloud 不鼓励使用令牌,您可以在本文中阅读:

https://cloud.google.com/docs/authentication/

如果您的生产环境也是 Google 云,您可能根本不需要使用任何 JSON 文件。 Google 云具有 "DefaultCredentials" 的概念,它通过环境注入您的服务。您可以将代码简化为:

storageClient, err := storage.NewClient(ctx)

还建议使用 "ServiceAccount",这样您的应用程序使用的凭据就可以成为它的范围。您可以在这里阅读更多内容:

https://cloud.google.com/docs/authentication/getting-started