google.cloud.bigquery.Client() 忽略提供的范围,导致在获取驱动器凭据时权限被拒绝
google.cloud.bigquery.Client() ignoring provided scopes, resulting in Permission denied while getting Drive credentials
我正在尝试通过 google.cloud.bigquery Python 库查询存储在云端硬盘中的数据。
我已按照 Google 的 Querying Drive Data 指南进行操作。
因此,我的代码如下所示:
import google.auth
from google.cloud import bigquery
credentials, project = google.auth.default(
scopes=[
"https://www.googleapis.com/auth/drive",
"https://www.googleapis.com/auth/bigquery",
]
)
client = bigquery.Client(project, credentials)
query = client.query("""MY SQL HERE""")
query_results = query.result()
问题是:凭据对象和 bigquery 客户端忽略提供的范围,导致 google.api_core.exceptions.Forbidden: 403 Access Denied: BigQuery BigQuery: Permission denied while getting Drive credentials.
澄清一下,凭据和客户端都不包含提供的驱动器范围。
如何正确地将驱动器范围传递给我的 bigquery 客户端?
我的本地环境的应用程序默认凭据是我的授权用户,它是项目的所有者。
一旦您将应用程序默认凭据设置为授权用户,您就无法请求其他范围。
要请求其他范围,请在授权用户激活期间执行此操作。
更明确地说,当您 运行 gcloud auth application-default login
时,提供 --scopes
选项,然后是您想要的范围。对我来说,那是 gcloud auth application-default login --scopes=openid,https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/drive,https://www.googleapis.com/auth/bigquery
您应该将电子表格共享到您尝试联系的服务帐户电子邮件。
我正在尝试通过 google.cloud.bigquery Python 库查询存储在云端硬盘中的数据。
我已按照 Google 的 Querying Drive Data 指南进行操作。 因此,我的代码如下所示:
import google.auth
from google.cloud import bigquery
credentials, project = google.auth.default(
scopes=[
"https://www.googleapis.com/auth/drive",
"https://www.googleapis.com/auth/bigquery",
]
)
client = bigquery.Client(project, credentials)
query = client.query("""MY SQL HERE""")
query_results = query.result()
问题是:凭据对象和 bigquery 客户端忽略提供的范围,导致 google.api_core.exceptions.Forbidden: 403 Access Denied: BigQuery BigQuery: Permission denied while getting Drive credentials.
澄清一下,凭据和客户端都不包含提供的驱动器范围。
如何正确地将驱动器范围传递给我的 bigquery 客户端?
我的本地环境的应用程序默认凭据是我的授权用户,它是项目的所有者。
一旦您将应用程序默认凭据设置为授权用户,您就无法请求其他范围。
要请求其他范围,请在授权用户激活期间执行此操作。
更明确地说,当您 运行 gcloud auth application-default login
时,提供 --scopes
选项,然后是您想要的范围。对我来说,那是 gcloud auth application-default login --scopes=openid,https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/drive,https://www.googleapis.com/auth/bigquery
您应该将电子表格共享到您尝试联系的服务帐户电子邮件。