Autoryzacja Google App Engine dla Google BigQuery
Postępowałem zgodnie z instrukcjami whttps://developers.google.com/bigquery/authorization#service-accounts-appengine zrobić niektóre zapytania z silnika aplikacji do bigquery.
W kroku 2 klikam Zespół w Konsoli Google Api i przekierowuję do App Engine> Administracja> Uprawnienia. Dodaję nazwę konta usługi jako Email i jako rolę wybieram programistę (opcja „może edytować” jest niedostępna), a następnie kliknij „Zaproś użytkownika”. Następnie pojawia się komunikat: „Wysłano wiadomość e-mail na adres [email protected] w celu weryfikacji”. a status jest w toku. Jak mogę potwierdzić wiadomość e-mail?
Następnie przeprowadziłem test przy użyciu następującego kodu:
#!/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)
Odpowiedź brzmiała (uruchomiona z 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">
Jeśli przetestuję z localhost, odpowiedź brzmi:
HttpError: <HttpError 401 when requesting https://www.googleapis.com/bigquery/v2/projects/XXXXXXXX/queries?alt=json returned "Invalid Credentials">
Ktoś mógłby mi pomóc? :-)