https://developers.google.com/bigquery/authorization#service-accounts-appengineの指示に従って、 アプリ エンジンから BigQuery へのクエリをいくつか作成しました。
ステップ 2 で、Google Api コンソールの [Team] をクリックすると、[App Engine] > [Administration] > [Permissions] にリダイレクトされます。サービス アカウント名を電子メールとして追加し、役割として開発者を選択し ([編集可能] オプションは使用できません)、[ユーザーを招待] をクリックします。その後、「検証のためにメールが xxxxxx@appspot.gserviceaccount.com に送信されました」というメッセージが表示されます。ステータスは Pending です。どうすればメールを確認できますか?、ここにバグがあるようです...
次に、次のコードを使用してテストを行いました。
#!/usr/bin/env python
import httplib2
import webapp2
from google.appengine.api import memcache
from apiclient.discovery import build
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from oauth2client.appengine import AppAssertionCredentials
# BigQuery API Settings
PROJECT_NUMBER = 'XXXXXXXX'
credentials = AppAssertionCredentials(scope='https://www.googleapis.com/auth/bigquery')
http = credentials.authorize(httplib2.Http(memcache))
service = build("bigquery", "v2", http=http)
class MainHandler(webapp2.RequestHandler):
def get(self):
query = {'query':'SELECT word,count(word) AS count FROM publicdata:samples.shakespeare GROUP BY word;',
'timeoutMs':10000}
jobRunner = service.jobs()
reply = jobRunner.query(projectId=PROJECT_NUMBER,body=query).execute()
self.response.out.write(reply)
app = webapp2.WSGIApplication([
('/', MainHandler)
], debug=True)
そして返信は(Googleから実行):
HttpError: <HttpError 403 when requesting https://www.googleapis.com/bigquery/v2/projects/XXXXXXXX/queries?alt=json returned "Access Denied: Job YYYYYYYY:job_e57bdde0144c495dbc864ccbfb82b704: RUN_QUERY_JOB">
localhost からテストすると、答えは次のようになります。
HttpError: <HttpError 401 when requesting https://www.googleapis.com/bigquery/v2/projects/XXXXXXXX/queries?alt=json returned "Invalid Credentials">
誰かが私を助けることができますか?:-)