错误:(gcloud.auth.activate-service-account)无法激活给定的服务帐户。请确保提供的密钥文件有效

use*_*373 0 authentication gcloud google-speech-api

我正在尝试遵循本指南https://cloud.google.com/speech/docs/getting-started,以通过curl调用GAE语音至文本api。但这似乎不起作用。

我已经建立了一个项目并启用了语音对文本api的功能。但是,当我尝试激活服务帐户时,它失败了。我已经运行了诊断程序,尝试了其他帐户,验证了json文件(已发送电子邮件),并尝试了gcloud beta init :-(

bash-3.2 $ gcloud auth激活服务帐户account@project.iam.gserviceaccount.com --key-file = project.json错误:(gcloud.auth.activate-service-account)无法激活给定的服务帐户。请确保提供的密钥文件有效。

尽管“ gcloud auth print-access-token”的下一步返回一个令牌。

但是最后一步(curl)返回此信息-

{“错误”:{“代码”:403,“消息”:“ Google Cloud Speech API之前未在项目google.com:cloudsdktool中使用或已禁用。请访问https://console.developers启用它。 google.com/apis/api/speech.googleapis.com/overview?project=google.com:cloudsdktool然后重试。如果您最近启用了此API,请等待几分钟,以将操作传播到我们的系统并重试。“, “状态”:“ PERMISSION_DENIED”,“详细信息”:[{“ @type”:“ type.googleapis.com/google.rpc.Help”,“链接”:[{“描述”:“ Google开发人员控制台API激活” ,“ url”:“ https://console.developers.google。com / apis / api / speech.googleapis.com / overview?project = google.com:cloudsdktool “}]}]}}

问题似乎出在用于验证传入请求的项目(google.com:cloudsdktool而不是我的)中。

我猜想激活服务帐户的电话是造成此问题的原因?

che*_*rba 5

之所以收到google.com:cloudsdktool项目错误消息,是因为您使用curl运行的命令gcloud auth print-access-token使用的是您的用户帐户凭据(由创建gcloud auth login),而不是服务帐户(因为您指出该步骤对您来说失败了)。

激活服务帐户命令是正确的(顺便说一句,您不需要提供该帐户,因为将使用文件中的一个)

$ gcloud auth activate-service-account --key-file=project.json
Run Code Online (Sandbox Code Playgroud)

确保project.json正确格式的文件是正确的文件。您可以在以下任一位置创建此json密钥文件

  1. https://console.cloud.google.com/iam-admin/serviceaccounts/project?project=YOUR_PROJECT_NAME中
  2. gcloud iam service-accounts keys create,请参阅参考指南

该文件看起来像

{
  "private_key_id": "....",
  "private_key": "-----BEGIN PRIVATE KEY-----...-----END PRIVATE KEY-----\n",
  "client_email": "...",
  "client_id": "...",
  "type": "service_account"
}
Run Code Online (Sandbox Code Playgroud)

请注意,这client_email将用于activate-service-account命令中的ACCOUNT 。