预测API + GAE:凭据无效

时间:2013-06-29 20:21:59

标签: python google-app-engine google-oauth google-prediction

我正在尝试让我的GAE(python)应用程序与Prediction 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,因为据我所知,这是我的用例正确,因为我的应用程序直接尝试与Prediction API交谈

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

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

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

要检查的一些事项:

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

  2. AppAssertionCredentials无法在本地dev_appserver.py环境中运行,请确保部署到&lt;您的应用名称&gt; .appspot.com以使用 - 或者在本地测试时使用SignedJwtAssertionCredentials作为替代。< / p>

  3. 确保与App Engine应用关联的服务帐户已添加到&#34;团队&#34;在启用了Prediction API的项目的API控制台中。