GA4数据获取报错invalid_grant:Invalid JWT Signature求助
排查GA4 Data API调用的"Invalid JWT Signature"错误
以下是针对你遇到的invalid_grant/Invalid JWT Signature错误的排查方向和修复方案:
1. 错误的API权限范围(Scope)
你的代码中使用了UA(Universal Analytics)的权限范围AnalyticsReporting::ANALYTICS_READONLY,但GA4 Data API需要专用的范围:
// 替换原Scope配置 $client->setScopes([ Google_Service_AnalyticsData::ANALYTICS_DATA_READONLY ]);
UA的权限范围无法用于GA4的Data API请求,这是导致JWT签名验证失败的核心原因之一。
2. 禁用SSL验证的风险
代码中关闭了SSL验证'verify' => false,这会破坏Google API的安全验证流程,可能导致JWT签名无法被正确校验。请移除这部分配置,确保服务器能正常验证SSL证书:
// 移除以下代码块 // $httpClientConfig = [ // 'verify' => false, // This disables SSL verification // ]; // $httpClient = new Client($httpClientConfig); // $client->setHttpClient($httpClient);
如果服务器缺少CA证书,可配置正确的CA证书路径,而非直接禁用验证。
3. GA4维度名称错误
你使用了UA风格的ga:country作为维度名,GA4的维度不需要ga:前缀,应改为:
$dimension->setName('country');
虽然这不是当前JWT错误的直接原因,但会导致后续报表请求返回数据异常。
4. 服务账号密钥文件验证
- 确认
account-key.json文件路径正确,使用__DIR__时要确保文件确实在当前脚本的目录下 - 打开密钥文件,检查JSON格式是否完整,没有缺失字符或多余空格(复制粘贴时容易出现这类问题)
- 确认密钥文件是从Google Cloud控制台重新下载的最新版本,避免使用已过期或被篡改的文件
5. 服务账号权限确认
虽然你提到已配置管理员角色,仍需再次确认:
- 服务账号的邮箱已添加到GA4属性的「权限管理」中,角色为「查看者」或更高(管理员权限没问题)
- 权限已生效(添加后可能需要等待几分钟同步)
内容的提问来源于stack exchange,提问作者X3R0
相关产品推荐
相关产品推荐

