首页 > 解决方案 > 如何对谷歌机器学习预测端点进行经过身份验证的 Rest 调用?

问题描述

我想对谷歌机器学习预测端点进行简单的 http rest 调用,但我找不到任何有关如何执行此操作的信息。据我从有限的文档中可以看出,您必须使用 Java 或 Python 库(或弄清楚在使用 REST 身份验证端点时如何正确加密所有内容)并获取凭据对象。然后说明结束,我不知道如何实际使用我的凭据对象。到目前为止,这是我的代码:

import urllib2
from google.oauth2 import service_account

# Constants
ENDPOINT_URL = 'ml.googleapis.com/v1/projects/{project}/models/{model}:predict?access_token='
SCOPES = ['https://www.googleapis.com/auth/cloud-platform']
SERVICE_ACCOUNT_FILE = 'service.json'

credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
access_token=credentials.token

opener = urllib2.build_opener(urllib2.HTTPHandler)
request = urllib2.Request(ENDPOINT_URL + access_token)
request.get_method = lambda: 'POST'
result = opener.open(request).read()
print(str(result))

如果我打印 credentials.valid 它返回 False,所以我认为凭证对象 init 存在问题,但我不知道是什么,因为没有报告错误,凭证对象中的字段都是正确的,我做了所有事情指示。此外,我的 service.json 与我们的移动团队成功用于获取访问令牌的服务相同,因此我知道 json 文件具有正确的数据。

如何获取可用于调用预测端点的机器学习服务的访问令牌?

标签: google-oauthgoogle-python-api

解决方案


事实证明,进行简单查询的最佳方法是使用 gcloud 控制台。我最终按照此处的说明设置我的环境:https ://cloud.google.com/sdk/docs/quickstart-debian-ubuntu

然后这里的说明实际到达端点(在最初设置模型的人的帮助下): https ://cloud.google.com/sdk/gcloud/reference/ml-engine/predict

这比尝试使用 python 库要容易得多,我强烈推荐给任何试图点击预测端点的人。


推荐阅读