You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

google.cloud.bigquery.Client忽略指定scope导致获取Drive凭证权限被拒如何解决

解决步骤
  • 第一步:重新生成带Drive权限的本地应用默认凭证
    本地此前通过gcloud auth application-default login生成的缓存凭证默认没有Drive访问权限,且google.auth.default会优先复用已有缓存,忽略代码中传入的scopes参数。执行以下命令重新生成带对应权限的凭证:
    gcloud auth application-default login --scopes=https://www.googleapis.com/auth/bigquery,https://www.googleapis.com/auth/drive
    
    执行后会弹出浏览器授权,用你当前的项目所有者账号完成授权即可。
  • 第二步:修正代码的客户端初始化写法
    显式指定BigQuery客户端的构造参数,避免位置参数顺序变更导致的传值错误,修正后代码如下:
    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=project, credentials=credentials)
    
    query = client.query("""MY SQL HERE""")
    query_results = query.result()
    
  • 第三步:确认Drive资源权限
    确认你的授权用户账号对查询涉及的Drive文件/文件夹有至少查看者权限,否则即使scope配置正确也会触发权限报错。

内容的提问来源于stack exchange,提问作者Ian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 07:39:03