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

BigQuery出现Invalid JWT Signature错误如何解决并创建数据集

RefreshError: invalid_grant 报错修复方案

核心原因

该错误是Google OAuth服务验证服务账号生成的JWT签名失败导致,排除你已经试过的重建服务账号、更新密钥的场景,可按以下步骤逐一排查修复:

排查修复步骤

  • 验证密钥文件完整性
    首先确认上传到Colab的服务账号JSON密钥没有被截断或修改,运行以下代码校验内容:
    import json
    key_path = '/content/project1-0000000-4b7861b26a6a.json'
    with open(key_path, 'r') as f:
        key_data = json.load(f)
    # 校验核心字段是否存在
    assert 'private_key' in key_data, '密钥缺少私钥字段'
    assert key_data['private_key'].startswith('-----BEGIN PRIVATE KEY-----'), '私钥格式错误'
    assert key_data['private_key'].endswith('-----END PRIVATE KEY-----\n'), '私钥被截断'
    
    如果抛出断言错误,重新从Google Cloud控制台下载完整的服务账号密钥,再上传到Colab即可。
  • 校验项目ID匹配关系
    确认代码中设置的PROJECT = 'project1'和密钥文件中project_id字段的值完全一致,拼写、大小写错误都会导致签名校验失败。
  • 升级依赖解决兼容问题
    你使用的google-cloud-bigquery==1.21.0版本过旧,和新版google-auth认证类库存在签名逻辑不兼容的问题,运行以下命令升级依赖,之后重启Colab运行时再重新执行代码:
    !pip install --upgrade google-cloud-bigquery google-auth google-oauth2 google-api-core
    
  • 确认服务账号权限
    登录Google Cloud控制台,进入project1项目的IAM页面,确认当前使用的服务账号(密钥中client_email字段对应的账号)被授予了至少BigQuery 数据编辑者权限,缺少bigquery.datasets.create权限也会触发相关认证报错。
  • 兜底认证方案
    以上步骤都无法解决时,可以直接使用Colab内置的用户认证方式,绕过本地服务账号密钥的签名逻辑,替换原有代码为以下内容即可:
    from google.colab import auth
    from google.cloud import bigquery
    
    # 触发Google账号授权,按提示登录完成认证
    auth.authenticate_user()
    
    PROJECT = 'project1'
    bq = bigquery.Client(project=PROJECT)
    
    dataset_id2 = "{}.tokyo".format(PROJECT)
    dsinfo3 = bigquery.Dataset(dataset_id2)
    dsinfo3.location = "asia-northeast1"
    ds_tokyo = bq.create_dataset(dsinfo3, exists_ok=True)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:24:02