使用服务帐户和oauth2调用autoML Google API

时间:2018-08-16 11:41:10

标签: rest google-cloud-platform google-oauth2 automl google-cloud-iam

我已经使用autoML API训练了图像分类模型,现在我想创建一个JAVA程序,使用该模型对给定的图像进行预测。如docs中所述,此API需要OAuth范围:https://www.googleapis.com/auth/cloud-platform

我不需要用户登录,因为我不会使用任何私人数据,所以我决定使用服务帐户,并按照OAuth2 for service accounts中的步骤生成访问令牌。

整个过程进展顺利,我收到了回复:

    {"access_token": "access_token_string", "expires_in": 3600, "token_type": "Bearer"}

然后,我返回发送autoML预测的发布请求,并将标头“ Authorization”设置为“ Bearer access_token_string”。 我收到错误消息

{"error": 
   {
   "code": 403,
   "message": "The caller does not have permission",
   "status": "PERMISSION_DENIED"
   }
}

我知道预测请求是正确的,因为我已经使用为Web应用程序生成的accessToken进行了尝试(只是想测试)。 所以问题出在授权部分,我检查了我的服务帐户是否也具有所有必需的权限。我不知道问题出在哪里,有人知道吗?

1 个答案:

答案 0 :(得分:3)

因为没有答案,所以我联系了Google支持服务,他们告诉我以下请求是正确的,问题在于允许该服务帐户访问我的GCP项目资源。 here

解释了此步骤

我已经完成了这一步,但是我应该第一次错过一些东西,所以我删除了服务帐户并重新启动了所有步骤,现在可以正常工作了! 我希望这会帮助某人:)