预测API+GAE:无效凭据



我正试图让我的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. 对于Prediction API的1.6版,您不再需要指定developerKey(所以我建议不要这样做),AppAssertionCredentials就足够了。

  2. AppAssertionCredentials在本地dev_appserver.py环境中不起作用,请确保部署到<您的应用程序名称>。appspot.com在本地测试时使用或考虑使用SignedJwtAssertionCredentials作为替代。

  3. 确保将与应用程序引擎应用程序关联的服务帐户添加到API控制台中已启用预测API的项目的"团队"中。

相关内容

  • 没有找到相关文章

最新更新