【发布时间】:2013-10-22 19:13:32
【问题描述】:
是否有任何方法可以向给定的客户端 ID 授予对特定 BigQuery 数据集的只读访问权限?
我尝试过使用服务帐户,但这提供了对所有数据集的完全访问权限。
还尝试从其他应用程序创建服务帐户,并将与证书一起生成的电子邮件地址添加到 BigQuery > 某些数据集 > 共享数据集 > 可以查看,但这总是会导致 403“访问未配置”错误.
我正在使用文档中描述的服务器到服务器流程:
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'
f = file('key.p12', 'rb')
key = f.read()
f.close()
credentials = SignedJwtAssertionCredentials(
SERVICE_ACCOUNT_EMAIL,
key,
scope='https://www.googleapis.com/auth/bigquery.readonly')
http = httplib2.Http()
http = credentials.authorize(http)
service = build('bigquery', 'v2')
tables = service.tables()
response = tables.list(projectId=PROJECT_NUMBER, datasetId='SomeDataset').execute(http)
print(response)
我基本上是在尝试为单个数据集提供对基于外部服务器的应用程序的只读访问。
【问题讨论】:
-
您是否在新创建的应用上开启了 BigQuery api?
-
谢谢!这实际上成功了。
标签: python google-app-engine google-oauth google-bigquery