0

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_key として、アプリケーションの「サーバー アプリのキー」API キーを使用しています。これは、アプリケーションが予測 API と直接通信しようとしているため、これが私のユース ケースに適していることを理解しているためです。

何らかの理由で、これは機能しません。このコードをこのページから直接取得し、ニーズに合わせて調整しました: https://developers.google.com/prediction/docs/developer-guide#predictionfromappengine

実際のところ、同じコードをコピーして貼り付けると、Invalid Credentialsエラーが発生します。

助言がありますか?

4

1 に答える 1

2

いくつかの確認事項:

  1. Prediction API のバージョン 1.6 では、developerKey を指定する必要がなくなりました (そのため、指定しないことをお勧めします)。AppAssertionCredentials で十分です。

  2. AppAssertionCredentials は、ローカルの dev_appserver.py 環境では機能しません。必ず <your app name>.appspot.com に展開して使用してください。または、ローカルでテストするときに、代わりに SignedJwtAssertionCredentials を使用することを検討してください。

  3. Prediction API が有効になっているプロジェクトの API コンソールで、App Engine アプリに関連付けられたサービス アカウントが「チーム」に追加されていることを確認します。

于 2013-06-30T02:58:02.600 に答える