Authentication &引用;“无效”;Google云平台上的服务帐户密钥
我使用GCP文本到语音API创建问候语和交互式菜单,向打电话到企业的客户播放。我曾经使用谷歌快速入门成功地使用过文本到语音API: 对于新的组织和项目,我再次使用了相同的快速入门指南,但我一直收到一个无效的密钥错误,我无法调试该错误。 以下是我用来调用服务的命令和结果:Authentication &引用;“无效”;Google云平台上的服务帐户密钥,authentication,google-cloud-platform,Authentication,Google Cloud Platform,我使用GCP文本到语音API创建问候语和交互式菜单,向打电话到企业的客户播放。我曾经使用谷歌快速入门成功地使用过文本到语音API: 对于新的组织和项目,我再次使用了相同的快速入门指南,但我一直收到一个无效的密钥错误,我无法调试该错误。 以下是我用来调用服务的命令和结果: # curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)”\ -H &quo
# curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)”\
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://texttospeech.googleapis.com/v1/text:synthesize > synthesize-output-base64.txt
{
"error": {
"code": 403,
"message": "The request is missing a valid API key.",
"status": "PERMISSION_DENIED"
}
}
我使用不同的身份验证标头重试:
# curl -X POST \
-H "X-Goog-Api-Key:***my_API_key***.json" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://texttospeech.googleapis.com/v1/text:synthesize > synthesize-output-base64.txt
{
"error": {
"code": 400,
"message": "API key not valid. Please pass a valid API key.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "API_KEY_INVALID",
"domain": "googleapis.com",
"metadata": {
"service": "texttospeech.googleapis.com"
}
}
]
}
}
我已重新验证了以下配置:
已为我的项目启用文本到语音API
我正在尝试使用的凭据(服务帐户)与文本到语音API一起列出为兼容。我验证了该服务帐户密钥是在尝试的身份验证中使用的密钥
我将我在GCP上的配置与我为另一家公司管理的另一个工作配置进行了比较。我看不出有什么不同
我比较了我的密钥和另一家公司的工作密钥,除了特定的用户数据外,它们是相同的
项目的账单账户在有效支付卡到位的情况下处于活动状态
这两个链接很有帮助,但并没有解决问题:
在此问题上的任何帮助都将不胜感激
编辑器角色创建了一个服务帐户
一切正常解决此问题的方法是安装Google Cloud SDK
CLI丢失,因此从
gcloud auth application default print access token
返回的输出是错误的。请验证gcloud auth application default print access token
是否实际返回了有效的OAuth访问令牌。对于第二个示例,这是不正确的-H“X-Goog-Api-Key:**my_-Api\u-Key***.json”
是.json
结束打字错误吗?如果是,请更正详细信息。如果CLI未打印错误并打印长字符串,则很可能是有效的访问令牌。有几种变体,但它应该以类似于ya29的内容开始。
。(四个字符和一个句号)。对于第一个示例,我建议将令牌创建输出分配给shell变量,然后将其用作承载令牌。帮助调试。要验证Google OAuth访问令牌:curl-H“授权:承载令牌”https://www.googleapis.com/oauth2/v3/tokeninfo
***我的API密钥***
是我放置实际密钥的地方。我本可以更好地选择如何隐藏我的密钥…我收到的错误代码显示我有一个无效密钥。在设置时是否有一些配置错误?是否使用CLI设置了服务帐户?请看我文章中的第6步:
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://texttospeech.googleapis.com/v1/text:synthesize
{
"audioContent": "//NExAARcrn0ABhEudAgAjuem7vohckY3IAFgWvxrBkAD//ARvqc/QhCZ/6EJO6E9Dvo2cjHPQhLfWQ/rTU7yEznsoGBn8hJz5xbQiOgEfwDzD1DVARLPlzGNXylbM8s//NExA0SCnoAAUIQAd8vlrM9DPR//6t5fpUpS
sk3MbzGUvMhqOpdSsjmcpeY2Zz ...................
}