我正试图让我的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
错误。
有什么建议吗?
需要检查的几件事:
-
对于Prediction API的1.6版,您不再需要指定developerKey(所以我建议不要这样做),AppAssertionCredentials就足够了。
-
AppAssertionCredentials在本地dev_appserver.py环境中不起作用,请确保部署到<您的应用程序名称>。appspot.com在本地测试时使用或考虑使用SignedJwtAssertionCredentials作为替代。
-
确保将与应用程序引擎应用程序关联的服务帐户添加到API控制台中已启用预测API的项目的"团队"中。