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

标签 rest google-cloud-platform google-oauth automl google-cloud-iam

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

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

过程顺利,我收到了回复:

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

然后,我返回发送 AutoML 预测的 post 请求,并将标题“Authorization”设置为“Bearer access_token_string”。
我有错误信息
{"error": 
   {
   "code": 403,
   "message": "The caller does not have permission",
   "status": "PERMISSION_DENIED"
   }
}

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

最佳答案

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

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

关于rest - 使用服务帐户和 oauth2 调用 autoML Google API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51876206/

相关文章:

python - 使用 OFFSET 在 Python 中迭代 JSON

rest - 如何使用Arduino将RFID阅读器连接到MySql数据库?

django - Tastypie "always_return_data"选项更改响应状态代码

google-cloud-platform - GCP 存储 - 未提供签名 key

google-app-engine - 如何限制计算引擎只接受来自应用引擎的请求

python-3.x - 通过python脚本访问confluence页面

api - 如何从Token获取Google用户信息

javascript - Node.js REST API 服务中使用的基于资源的路由模块,或此类服务的其他有用模块

node.js - Firebase从云函数API保存到数据库

android - 是什么阻止了其他应用窃取我的 Google OAuth 客户端 ID?