我已按照中的说明进行操作https://developers.google.com/bigquery/authorization#service-accounts-appengine从 App Engine 到 bigquery 进行一些查询。
在第 2 步中,我在 Google Api 控制台中单击“团队”,它会重定向到 App Engine > 管理 > 权限。我将服务帐户名称添加为电子邮件,并选择开发人员作为角色(“可以编辑”选项不可用),然后单击“邀请用户”。之后,出现一条消息:“一封电子邮件已发送至[电子邮件受保护]进行验证。”并且状态为待处理。我如何确认电子邮件?,似乎这里有一个错误......
接下来,我使用以下代码进行了测试:
#!/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)
回复是(从谷歌运行):
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">
有人可以帮助我吗? :-)
您可以添加[电子邮件受保护]到该项目http://cloud.google.com/console.
预计这很快就会变得更容易/更直接!
一步一步,@Christian:
- 转到应用程序的 App Engine 仪表板,单击应用程序设置并复制服务帐户名称 ([电子邮件受保护])
- Go to http://cloud.google.com/console
- 选择您的项目
- 单击齿轮图标并选择团队
- 点击添加会员
- 粘贴服务帐户名称并选择可以编辑权限,然后单击添加。
- 玩得开心!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)