5

https://developers.google.com/bigquery/authorization#service-accounts-appengineの手順に従って、アプリエンジンからbigqueryにクエリを実行しました。Google BigQuery用Google App Engineの承認

ステップ2では、Google Api Consoleで[チーム]をクリックし、App Engine>管理>権限にリダイレクトします。私はサービスアカウント名を電子メールとして追加し、開発者を選択するロール(オプション「編集可能」は利用できません)を追加し、「ユーザーを招待」をクリックします。その後、「確認のため[email protected]にメールが送信されました」というメッセージが表示されます。ステータスはPendingです。私はここにバグがあるようです?メール...

次を確認することができるか、私は次のコード使用してテストを行った:

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

誰かが私を助けることができますか? :-)

+0

このコードは私のために完璧に機能します(私の場合、「XXX ..」をBigQueryプロジェクトID、文字列で置き換えた場合)、認証の問題です。 Btw、AppAssertionCredentialsはlocalhostでは動作しません。 BigQuery APIはhttps://code.google.com/apis/console/#project:ZZZ:services(APIプロジェクト番号としてZZZを使用)にありますか? –

+0

はい、BigQueryがONです – Christian

+0

これがApp Engineにある場合は、https://appengine.google.com/settings?&app_id=s~your-appengine-project-nameを確認してください。 「Google APIコンソールプロジェクト番号:」の下のリンクをご覧ください。それをクリックし、そのプロジェクトがBigQuery APIをオンにしていることを確認します。 –

答えて

10

[email protected]http://cloud.google.com/consoleというプロジェクトに追加することができます。

これはすぐに簡単/より簡単になることが期待されます。


@Christianバイステップバイステップ、:あなたのアプリケーションのApp Engineのダッシュボードに

  1. ゴー、アプリケーション設定をクリックして、サービスアカウント名([email protected])をコピー
  2. ゴーhttp://cloud.google.com/console
  3. にプロジェクトの歯車のアイコンを
  4. クリックして選択し、チームを選択し
  5. メンバーの追加をクリックします
  6. サービスアカウント名を貼り付けて、編集権限を選択して追加をクリックします。
  7. 楽しくお楽しみください!
2

実際にアカウントを追加できる場所は2つあります。古いコンソールのcode.google.com/api/consoleを使用すると、appengine.google.comダッシュボードに移動します。つまり、実際に「確認」を求めるいくつかの問題があります。新しいhttps://cloud.google.com/consoleがこの問題を解決しました。

「Way-1経由でアカウントを追加した場合」

「Way-1」には問題があるようですが、アカウントには「保留中ステータス」が表示され続けます。何とかWay-1経由でアカウントを追加し、その後Way-2に従おうとすると、Way-2リンクで同じステータスが表示され続けます。そのためには、マウスのホバーに表示される「アイコンの削除」でそのユーザーを削除する必要があります。そこからアカウントを削除し、「編集できる」権限で[email protected]を追加してください。