Авторизация Google App Engine для Google BigQuery

Я следовал инструкциям в https://developers.google.com/bigquery/authorization, чтобы сделать несколько запросов от движка приложения до bigquery.

На шаге 2 я нажимаю на Team в консоли Google Api, и он перенаправляет на App Engine> Администрирование> Разрешения. Я добавляю имя учетной записи службы в качестве электронной почты и в качестве роли выбираю разработчика (опция "редактировать" недоступна), а затем нажимаю "Пригласить пользователя". После этого появляется сообщение: "Электронное письмо было отправлено на xxxxxx@appspot.gserviceaccount.com для проверки". и статус в ожидании. Как я мог подтвердить электронную почту? Кажется, здесь есть ошибка...

Затем я сделал тест, используя следующий код:

#!/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">

Если я тестирую с локального хоста, ответ:

HttpError: <HttpError 401 when requesting https://www.googleapis.com/bigquery/v2/projects/XXXXXXXX/queries?alt=json returned "Invalid Credentials">

Кто-то может мне помочь?:-)

2 ответа

Решение

Вы можете добавить xxxxxx@appspot.gserviceaccount.com в проект по адресу http://cloud.google.com/console.

Ожидайте, что это будет проще / проще в ближайшее время!


Шаг за шагом, @Christian:

  1. Перейдите на панель управления App Engine своего приложения, нажмите "Настройки приложения" и скопируйте имя учетной записи службы (xxxxxx@appspot.gserviceaccount.com)
  2. Перейдите на http://cloud.google.com/console.
  3. Выберите свой проект
  4. Нажмите на значок шестеренки и выберите команды
  5. Нажмите на Добавить участника
  6. Вставьте имя учетной записи службы и выберите разрешение на редактирование, затем нажмите "Добавить".
  7. Повеселись!

На самом деле есть две области, откуда вы можете добавить учетную запись. Если вы перейдете на старую консоль code.google.com/api/console, вы попадете на панель инструментов appengine.google.com, т. Е. "Путь-1", у которой на самом деле есть проблема с запросом "Подтверждение". Новый https://cloud.google.com/console решил эту проблему.

  • [Way-1] *Проблемный* нажмите http://appengine.google.com/ ==> your_app_name> ==> Разрешения

  • [Путь-2] *Работает* нажмите http://cloud.google.com/console ==> Нажмите ваше имя_папки ==> Нажмите Разрешения на левой панели ==> Нажмите кнопку Добавить участника и добавьте, например, xxxxxx@appspot.gserviceaccount.com с правами "Можно редактировать"

"Если вы уже добавили свою учетную запись с помощью способа Way-1, выполните следующие действия"

"Way-1", кажется, имеет некоторые проблемы, из-за этого ваша учетная запись будет продолжать отображать "Pending Status". Если каким-либо образом вы добавили учетную запись через Путь-1 и попытаетесь впоследствии следовать "Путь-2", вы продолжите видеть тот же статус по ссылке Путь-2. Для этого вам придется удалить этого пользователя с помощью "значка удаления", который появляется при наведении курсора мыши. Удалите оттуда учетную запись и добавьте xxxxxx@appspot.gserviceaccount.com с разрешением "Можно редактировать".

Другие вопросы по тегам