Google BigQuery的Google App Engine授权

Peñ*_*eña 5 google-app-engine authorization server-to-server google-bigquery

我按照https://developers.google.com/bigquery/authorization#service-accounts-appengine中的说明 从app引擎到bigquery进行了一些查询.

在第2步中,我点击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)
Run Code Online (Sandbox Code Playgroud)

回复是(从谷歌运行):

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">
Run Code Online (Sandbox Code Playgroud)

如果我从localhost测试,答案是:

HttpError: <HttpError 401 when requesting https://www.googleapis.com/bigquery/v2/projects/XXXXXXXX/queries?alt=json returned "Invalid Credentials">
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?:-)

Fel*_*ffa 10

您可以在http://cloud.google.com/console上将xxxxxx@appspot.gserviceaccount.com添加到项目中.

期待这很快变得更容易/更直接!


@Christian一步一步:

  1. 转到应用程序的App Engine仪表板,单击"应用程序设置"并复制服务帐户名称(xxxxxx@appspot.gserviceaccount.com)
  2. 转到http://cloud.google.com/console
  3. 选择您的项目
  4. 单击齿轮图标并选择团队
  5. 单击添加成员
  6. 粘贴服务帐户名称并选择可以编辑权限,然后单击添加.
  7. 玩得开心!