0

我正在做一个需要访问 Gcloud 服务帐户的项目。但是,我一直遇到身份验证问题。这是我的命令提示符下的以下错误:

我的命令:

curl -s -H "Content-Type: application/json" \ 
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ 
https://speech.googleapis.com/v1/speech:recognize \ 
-d @sync-request.json 

输出:

{
  "error": {
    "code": 401,
    "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "status": "UNAUTHENTICATED"
  }
}

目前,我做了以下事情:我设置了我的环境变量“GOOGLE_APPLICATION_CREDENTIALS”来保存我的服务帐户的 JSON 密钥文件的路径,我在密钥文件所在的目录中打开了我的 cmd,我运行了命令。还有什么我想念的吗?

我关注的文档来自https://cloud.google.com/docs/authentication/production#windows

4

1 回答 1

1

几件事。

gcloud不使用ADC;设置GOOGLE_APPLICATION_CREDENTIALS不配置gcloud

您应该(尚未尝试)能够使用gcloud auth activate-service-account ...然后gcloud auth print-access-token.

或者您可以只使用常规(人工|非服务)帐户和gcloud auth print-access-token.

或者,您可以使用gcloud auth application-default loginthengcloud auth application-default print-access-token但两者一起使用。

不要在标头中引用标记:

TOKEN="$(gcloud auth print-access-token)"                     # Either
TOKEN="$(gcloud auth application-default print-access-token)" # Or

curl \
--silent \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${TOKEN}" \
--data @sync-request.json \
https://speech.googleapis.com/v1/speech:recognize
于 2020-12-24T22:43:48.533 回答