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

使用OAuth与Google Analytics Admin API管理分析账户遇401鉴权错误

解决Google Analytics Admin API的401认证错误与权限配置问题

一、修复OAuth凭证导致的401错误

你的代码核心问题是把授权码(auth code)当成了刷新令牌(refresh token)直接使用,授权码是一次性临时凭证,必须先用来交换得到正式的refresh token才能长期复用。

正确的OAuth流程与代码修正

  1. 用授权码交换获取refresh token
    先调用Google的token接口,将用户授权得到的auth code转换成可用的refresh token和access token:
import yaml
import requests
from google.oauth2.credentials import Credentials
from google.analytics.admin import AnalyticsAdminServiceClient

# 读取配置文件
yaml_file = open('./oauth_analytics.yaml')
parsed_yaml_file = yaml.load(yaml_file, Loader=yaml.FullLoader)

auth_code = parsed_yaml_file['test_auth_code']
client_id = parsed_yaml_file['client_id']
client_secret = parsed_yaml_file['client_secret']
redirect_uri = "你的授权回调地址" # 必须和OAuth客户端配置的地址完全一致

# 发送请求交换token
token_response = requests.post(
    "https://oauth2.googleapis.com/token",
    data={
        "code": auth_code,
        "client_id": client_id,
        "client_secret": client_secret,
        "redirect_uri": redirect_uri,
        "grant_type": "authorization_code"
    }
)
token_data = token_response.json()

# 用返回的refresh token创建合法凭证
credentials = Credentials(
    token_data['access_token'],
    refresh_token=token_data['refresh_token'],
    token_uri="https://oauth2.googleapis.com/token",
    client_id=client_id,
    client_secret=client_secret
)

# 初始化客户端并调用接口
client = AnalyticsAdminServiceClient(credentials=credentials)
for account in client.list_accounts():
    print(account)
  1. 关键注意事项
  • 确保OAuth客户端配置的redirect_uri和代码中完全一致
  • 申请授权时必须携带正确的权限Scope:比如管理GA属性需https://www.googleapis.com/auth/analytics.edit,管理用户权限需https://www.googleapis.com/auth/analytics.manage.users
  • 面向外部用户的应用,需在Google Cloud Console的OAuth同意屏幕完成配置并发布应用

二、服务账号的权限分配方法

如果想用服务账号访问GA Admin API,需为其分配GA4账户/属性的具体权限:

  • 登录Google Analytics 4管理员界面
  • 进入目标账户或属性的用户管理页面
  • 点击添加用户,输入服务账号的完整邮箱(格式为[服务账号ID]@[项目ID].iam.gserviceaccount.com)
  • 为服务账号分配对应角色(如管理员、编辑者,按需选择)
  • 保存后,服务账号即可通过密钥文件访问指定GA资源

其他排查点

  • 确认Google Cloud Console中已启用Analytics Admin API
  • 检查OAuth凭证的Scope是否包含所需权限,权限不足也会触发认证失败
  • 本地测试时,OAuth客户端类型需选择桌面应用或Web应用(对应不同的redirect_uri规则)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:15:01