如何对 google 机器学习预测端点进行经过身份验证的 Rest 调用?

How do I make authenticated Rest call to google machine learning predict endpoint?

我想对 google 机器学习预测端点进行简单的 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))

If I print credentials.valid it returns False, 所以我认为 credentials object init 有问题但我不知道是什么,因为没有报告错误,字段都是在凭据对象内部正确,我按照说明做了所有事情。此外,我的 service.json 与我们的移动团队成功用于获取访问令牌的相同,因此我知道 json 文件具有正确的数据。

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

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

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

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