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

调用Google Sheets API时遇ACCESS_TOKEN_SCOPE_INSUFFICIENT错误(Golang)

问题:调用Google Sheets API时出现403权限不足错误

我尝试运行一个调用Google Sheets API的简单Golang程序,代码如下:

package main

import (
    "context"
    "fmt"

    "google.golang.org/api/sheets/v4"
)

func main() {
    ctx := context.Background()

    srv, err := sheets.NewService(ctx)
    if err != nil {
        panic(err)
    }

    resp, err := srv.Spreadsheets.Values.Get("1HG_cmqALkquc0ud8Pm7GKOhR5IpPSj20q_fFkHBaM5M", "A1").Do()
    if err != nil {
        panic(err)
    }
    fmt.Println(fmt.Sprintf("%+v", resp.Values))
}

执行步骤:先删除本地的application_default_credentials.json文件,再通过gcloud auth application-default login完成登录,凭证已保存到指定路径,但运行程序时出现以下报错:

$ go run sheets_api.go 
panic: googleapi: Error 403: Request had insufficient authentication scopes.
Details:
[
  {
    "@type": "type.googleapis.com/google.rpc.ErrorInfo",
    "domain": "googleapis.com",
    "metadata": {
      "method": "google.apps.sheets.v4.SpreadsheetsService.GetValues",
      "service": "sheets.googleapis.com"
    },
    "reason": "ACCESS_TOKEN_SCOPE_INSUFFICIENT"
  }
]

More details:
Reason: insufficientPermissions, Message: Insufficient Permission


goroutine 1 [running]:
main.main()
        /home/johan/20q/cmd/labelserver/sheets_api.go:20 +0x194
exit status 2

该Google表格由我创建,我的账号应有访问权限,请问哪里操作有误?

解决方法

问题核心是认证时未请求足够的API权限范围,gcloud auth application-default login默认权限不包含Google Sheets的读写/只读权限,需手动指定所需scope。

两种解决方式:

  • 方式一:重新登录时指定权限范围

    1. 先清除旧凭证:
      rm ~/.config/gcloud/application_default_credentials.json
      
    2. 带权限范围重新登录:
      # 只读权限用这个
      gcloud auth application-default login --scopes=https://www.googleapis.com/auth/spreadsheets.readonly
      # 需要读写权限的话用这个
      gcloud auth application-default login --scopes=https://www.googleapis.com/auth/spreadsheets
      
  • 方式二:代码中显式指定权限范围
    修改创建Service的代码,直接嵌入所需scope,避免后续登录时遗漏:

    package main
    
    import (
        "context"
        "fmt"
    
        "google.golang.org/api/option"
        "google.golang.org/api/sheets/v4"
    )
    
    func main() {
        ctx := context.Background()
    
        // 显式指定只读权限范围,读写的话换成sheets.SpreadsheetsScope
        srv, err := sheets.NewService(ctx, option.WithScopes(sheets.SpreadsheetsReadonlyScope))
        if err != nil {
            panic(err)
        }
    
        resp, err := srv.Spreadsheets.Values.Get("1HG_cmqALkquc0ud8Pm7GKOhR5IpPSj20q_fFkHBaM5M", "A1").Do()
        if err != nil {
            panic(err)
        }
        fmt.Println(fmt.Sprintf("%+v", resp.Values))
    }
    

内容的提问来源于stack exchange,提问作者Johan Wikström

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:01:12