【问题标题】:Code 401: Request had invalid authentication credentials. gcloud speech to text代码 401:请求具有无效的身份验证凭据。 gcloud 语音转文本
【发布时间】:2021-01-08 15:06:52
【问题描述】:

我收到“请求的身份验证凭据无效”错误。这就是我所做的:

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

在 Windows 机器上。

执行“gcloud auth application-default print-access-token”会给我一个响应。我还设置了 GOOGLE_APPLICATION_CREDENTIALS。

这里有什么问题?

【问题讨论】:

  • 服务帐号是否拥有所需的权限?
  • 可能不是:我收到“保存应用程序默认凭据时出错:gcloud auth application-default login 后无法写入文件权限被拒绝。

标签: authentication gcloud google-speech-to-text-api


【解决方案1】:

查看文档,它提供了一个使用 curl 的示例:

https://cloud.google.com/speech-to-text/docs/quickstart-protocol

您需要创建一个项目和一个属于该项目的服务帐户,以便将您的请求绑定到可能计费的资源。

然后,您可以使用服务帐户的应用程序默认凭据,通过 curl,您需要gcloud auth application-default login(使用服务帐户)然后gcloud auth application-default print-access-token 来获取 curl 的不记名令牌。

2021-01-11 更新

以下是完整的步骤:

PROJECT=[[YOUR-PROJECT]]
BILLING=[[YOUR-BILLING]]
ACCOUNT=[[YOUR-ACCOUNT]] # e.g. roboto
ADDRESS=${ROBOT}@${PROJECT}.iam.gserviceaccount.com

gcloud projects create ${PROJECT}

gcloud beta billing projects link ${PROJECT} \
--billing-account=${BILLING}

# Enable speech-to-text service
gcloud services enable speech.googleapis.com \
--project=${PROJECT}

# Create Service Account
gcloud iam service-accounts create ${ACCOUNT} \
--project=${PROJECT}

# NB The Account needs no roles|permissions

# Create Service Account Key
gcloud iam service-accounts keys create ./${ROBOT}.json \
--iam-account=${EMAIL} \
--project=${PROJECT}

# Export for Application Default Creds
export GOOGLE_APPLICATION_CREDENTIALS="${PWD}/${ROBOT}.json"

# Call it
TOKEN=$(gcloud auth application-default print-access-token)
curl \
--silent \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${TOKEN}" \
https://speech.googleapis.com/v1/speech:recognize \
--data '{ "config": { "encoding":"FLAC", "sampleRateHertz": 16000, "languageCode": "en-US", "enableWordTimeOffsets": false }, "audio": { "uri":"gs://cloud-samples-tests/speech/brooklyn.flac" } }'

产量:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "how old is the Brooklyn Bridge",
          "confidence": 0.9823954
        }
      ]
    }
  ]
}

【讨论】:

  • 在 gcloud auth application-default login 之后,我的权限被拒绝。但我没有看到任何缺失的权限。
  • 谢谢。我切换到我的 Macbook,效果很好。
  • 很高兴听到这个消息!如果有帮助,请采纳答案。
猜你喜欢
  • 1970-01-01
  • 2019-04-06
  • 1970-01-01
  • 2020-11-09
  • 1970-01-01
  • 1970-01-01
  • 2020-09-11
  • 2019-06-23
  • 1970-01-01
相关资源
最近更新 更多