11

この質問は簡単に答えることができるように思えますが、何日にもわたる研究といくつかの行き詰まりの後、BigQueryユーザーベースの OAuth を主張せずにクエリ結果を取得することはできないようです。これで運が良かった人はいますか?私はGoogle AppEngine自分のアプリには使用していませEC2ん。. 正確な状況は次のとおりです。

User wants reporting data -->
Web server makes queries to BigQuery -->
Data is transformed for use in WebApp and returned to User.

Google の例に従うたびに、認証に使用する Google アカウントを選択するように求める Web ブラウザがポップアップ表示されます。

4

3 に答える 3

16

申し訳ありませんが、これに関する情報を見つけるのは非常に困難です。OAuth 2.0ガイドを使用した BigQuery API へのアクセスの承認に記載されているサービス アカウントと呼ばれるものを探しています。

Pythonクライアント ライブラリを使用した例を次に示しますが、適切な資格情報の取得に関する情報については、参照ドキュメントを参照してください。

import httplib2

from apiclient.discovery import build
from oauth2client.client import SignedJwtAssertionCredentials

# REPLACE WITH YOUR Project ID
PROJECT_NUMBER = 'XXXXXXXXXXX'
# REPLACE WITH THE SERVICE ACCOUNT EMAIL FROM GOOGLE DEV CONSOLE
SERVICE_ACCOUNT_EMAIL = 'XXXXX@developer.gserviceaccount.com'

# OBTAIN THE KEY FROM THE GOOGLE APIs CONSOLE
# More instructions here: http://goo.gl/w0YA0
f = file('key.p12', 'rb')
key = f.read()
f.close()

credentials = SignedJwtAssertionCredentials(
    SERVICE_ACCOUNT_EMAIL,
    key,
    scope='https://www.googleapis.com/auth/bigquery')

http = httplib2.Http()
http = credentials.authorize(http)

service = build('bigquery', 'v2')
datasets = service.datasets()
response = datasets.list(projectId=PROJECT_NUMBER).execute(http)

print 'Dataset list:'
for dataset in response['datasets']:
  print '%s' % dataset['datasetReference']['datasetId']
于 2012-11-03T23:37:01.967 に答える
0

同じ問題がありました。使用しているサービス アカウント キーに対するプロジェクトで必要な権限がないことが原因である可能性があります。

于 2016-02-29T22:09:59.640 に答える