我已按照说明操作了 https://developers.google.com/bigquery/authorization#service-accounts-appengine从app引擎到bigquery进行一些查询。
在第2步中,我点击Google Api控制台中的团队,然后重定向到App Engine&gt; <给药>权限。我将服务帐户名称添加为电子邮件,并选择我选择开发人员的角色(“可以编辑”选项不可用),然后单击“邀请用户”。之后,会显示一条消息:“已将电子邮件发送至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)
回复是(从谷歌运行):
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">
有人可以帮助我吗? : - )
答案 0 :(得分:10)
您可以在http://cloud.google.com/console将xxxxxx@appspot.gserviceaccount.com添加到项目中。
预计很快会更容易/更直接!
@Christian一步一步:
答案 1 :(得分:2)
实际上,您可以在两个区域添加帐户。如果你使用旧的控制台code.google.com/api/console,它会带你到你的appengine.google.com仪表板,即“Way-1”,它实际上有一些问题要求“验证”。新https://cloud.google.com/console解决了这个问题。
[方式1] * 有问题 * 点击http://appengine.google.com ==&gt; your_app_name&gt; ==&gt; 权限
[Way-2] * 作品 * 点击http://cloud.google.com/console ==&gt; 点击your_app_name ==&gt; 点击 左窗格上的权限 ==&gt; 点击添加会员按钮并添加例如xxxxxx@appspot.gserviceaccount.com并使用“可编辑”权限
“如果您已经通过Way-1添加了您的帐户,请按照以下方法”
“Way-1”似乎有一些问题,因此您的帐户将继续显示“待处理状态”。如果您以某种方式通过Way-1添加了帐户并尝试遵循“Way-2”,那么您将在路2链接处看到相同的状态。为此,您必须使用鼠标悬停时出现的“删除图标”删除该用户。从那里删除帐户,并使用“可以编辑”权限添加xxxxxx@appspot.gserviceaccount.com。