0

我正在尝试让我的 GAE (python) 应用程序与预测 API 对话,但我不断收到 HttpError: <HttpError 401 when requesting ... returned "Invalid Credentials">

我拥有的 GAE 代码是:

from handler_request import Request_Handler # My extended Request Handler
from apiclient.discovery import build
from oauth2client.appengine import AppAssertionCredentials
import httplib2

api_key = "<my key for server apps>"

http = AppAssertionCredentials('https://www.googleapis.com/auth/prediction').authorize(httplib2.Http())
service = build('prediction', 'v1.6', http=http, developerKey=api_key)

class ListModels(Request_Handler):
    def get(self):
        papi = service.trainedmodels()

        result = papi.list(
            project='my_project_number',
            maxResults=10
        ).execute()

        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('Result: ' + repr(result))
  • 所有导入的库都是 Google 的 python API 库,并且正在正确导入。
  • 我正在使用我的应用程序的“服务器应用程序密钥”API 密钥作为 api_key,因为我知道这对于我的用例来说是正确的,因为我的应用程序直接尝试与预测 API 对话

出于某种原因,这不起作用。我已直接从此页面获取此代码并根据我的需要对其进行了调整:https ://developers.google.com/prediction/docs/developer-guide#predictionfromappengine

事实上,如果我复制并粘贴相同的代码,我仍然会收到Invalid Credentials错误消息。

有什么建议么?

4

1 回答 1

2

需要检查的几件事:

  1. 对于 1.6 版的 Prediction API,您不再需要指定 developerKey(所以我建议不要这样做),AppAssertionCredentials 就足够了。

  2. AppAssertionCredentials 在本地 dev_appserver.py 环境中不起作用,请确保您部署到 <your app name>.appspot.com 以使用 - 或者在本地测试时考虑使用 SignedJwtAssertionCredentials 作为替代品。

  3. 确保将与 App Engine 应用关联的服务帐户添加到启用了 Prediction API 的项目的 API 控制台中的“团队”中。

于 2013-06-30T02:58:02.600 回答