我试图按照本指南https://cloud.google.com/speech/docs/getting-started通过curl将GAE语音调用为文本api。但它似乎不起作用。
我已经设置了一个项目并启用了语音api语音。但是当我尝试激活服务帐户时,它失败了。我运行了诊断程序,尝试了不同的帐户,验证了json文件(有电子邮件),尝试了gcloud beta init: - (
bash-3.2 $ gcloud auth activate-service-account 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,请等待几分钟,以便将操作传播到我们的系统并重试。", " status":" 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而不是我的)。
我是否猜测调用activate-service-account会引起这种情况?
答案 0 :(得分:4)
您收到google.com:cloudsdktool
项目的错误消息,因为您使用curl gcloud auth print-access-token
运行的命令使用的是您的用户帐户凭据(由gcloud auth login
创建),而不是服务帐户(因为您指出你的步骤失败了。)
command to activate service account是正确的(顺便说一下,您不需要提供帐户,因为将使用该文件中的一个)
$ gcloud auth activate-service-account --key-file=project.json
确保您的project.json
文件格式正确,格式正确。您可以在
gcloud iam service-accounts keys create
,请参阅reference guide。该文件看起来像
{
"private_key_id": "....",
"private_key": "-----BEGIN PRIVATE KEY-----...-----END PRIVATE KEY-----\n",
"client_email": "...",
"client_id": "...",
"type": "service_account"
}
请注意,client_email
将用于activate-service-account
命令中的ACCOUNT。
答案 1 :(得分:-2)
更改编码和解码.json文件的步骤。此步骤会出现一些错误。
请勿在base64的环境变量中对值进行编码。而是粘贴.json文件的全部内容。
该命令将如下所示:
- echo $ GCLOUD_API_KEYFILE > ./gcloud-api-key.json
- gcloud-auth activate-service-account --key-file gcloud-api-key.json