Python 如何创建访问单个数据集的Google BigQuery服务帐户?

Python 如何创建访问单个数据集的Google BigQuery服务帐户?,python,google-app-engine,google-oauth,google-bigquery,Python,Google App Engine,Google Oauth,Google Bigquery,是否有任何方法可以向给定的客户端ID授予对特定BigQuery数据集的只读访问权限 我尝试过使用服务帐户,但这样可以完全访问所有数据集 还尝试从其他应用程序创建服务帐户,并将与证书一起生成的电子邮件地址添加到BigQuery>Some Dataset>Share Dataset>Can view,但这始终会导致403“Access not Configured”错误 我正在使用文档中描述的服务器到服务器流程: import httplib2 from apiclient.discovery i

是否有任何方法可以向给定的客户端ID授予对特定BigQuery数据集的只读访问权限

我尝试过使用服务帐户,但这样可以完全访问所有数据集

还尝试从其他应用程序创建服务帐户,并将与证书一起生成的电子邮件地址添加到BigQuery>Some Dataset>Share Dataset>Can view,但这始终会导致403“Access not Configured”错误

我正在使用文档中描述的服务器到服务器流程:

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)

我基本上是试图为单个数据集提供对外部基于服务器的应用程序的只读访问

正如Fh所指出的,需要在创建服务帐户的Google帐户中激活BigQuery API,而不管它将查询绑定到不同应用程序ID的BigQuery端点。

您是否在新创建的应用程序上打开了BigQuery API?谢谢!这实际上是一个骗局。