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

如何在Google Analytics API调用中传入access_token?遇401错误求助

解决Google Analytics API 401 "Login Required" 错误(已持有refresh_token场景)

兄弟,这个401错误核心就是你的API请求没带上有效的access_token——虽然你已经拿到了refresh_token,但你的代码还没利用它来生成可用的access_token呢。我给你梳理下具体的解决步骤:

关键问题分析

Google Analytics API要求每个请求都携带有效的access_token来验证身份。你已经通过OAuth2授权拿到了refresh_token,这个token的作用就是在access_token过期时,自动获取新的access_token,而不需要用户再次授权。你的代码目前缺少了用refresh_token获取access_token的环节,所以才会触发"Login Required"错误。

具体修改方案

1. 给Google_Client传入refresh_token

在初始化Google_Client后,直接调用refreshToken()方法传入你持有的refresh_token,这会让客户端立即用refresh_token去获取一个新的access_token(如果当前没有有效的access_token的话)。

2. 修改后的完整代码

$client = new Google_Client();
$client->setApplicationName("APP_NAME");
$client->setAuthConfig(GA_KEYS_JSON);
$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);

// 替换成你实际持有的refresh_token字符串
$your_refresh_token = "这里放你的refresh_token";
$client->refreshToken($your_refresh_token);

$analytics = new Google_Service_Analytics($client);

// 获取有权访问的账号列表
$accounts = $analytics->management_accounts->listManagementAccounts();
$items = $accounts->getItems();
var_dump($items);
die();

3. 额外检查点

  • 确认你的refresh_token是有效且未被撤销的:如果用户后来取消了对你应用的授权,或者你重新生成了授权凭证,旧的refresh_token会失效。
  • 确保GA_KEYS_JSON里的客户端ID、客户端密钥,和你当初获取refresh_token时使用的完全一致——不匹配的话,refresh_token无法被用来获取access_token。
  • 可以在调用API前打印var_dump($client->getAccessToken());,检查返回的数组里是否包含access_token字段,以及expires_in是否显示有效时间,以此验证token是否获取成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:29:43