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

使用google-api-client PHP获取GSC数据遇403权限错误求助

解决Google Search Console API 403权限不足问题

问题场景

我正在尝试用google-api-php-client获取Google Search Console(GSC)的数据,当前权限情况如下:

  • 在Google开发者控制台是项目所有者
  • 在GSC后台(对应站点http://www.mysite.io)是受限用户
  • 已在开发者控制台创建拥有项目所有者角色的服务账号,且将凭证JSON文件存储在服务器上

现有代码

// Fetch GoogleSearchConsole data and store it.
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . getcwd() . '/../my-service-account-creds.json');
$client = new Google_Client();
$client->setApplicationName('my-project');
$client->useApplicationDefaultCredentials();
$client->addScope([Google_Service_Webmasters::WEBMASTERS_READONLY, Google_Service_Webmasters::WEBMASTERS]);
$service = New Google_Service_Webmasters($client);
$query = New Google_Service_Webmasters_SearchAnalyticsQueryRequest();
$query->setStartDate(strtotime('2018-01-15'));
$query->setEndDate(strtotime('2018-01-22'));
$query->setDimensions(['page']);
$hmm = $service->searchanalytics->query('http://www.mysite.io', $query);

遇到的错误

调用接口后始终返回403权限错误:

{ 
    "error": { 
        "errors": [ 
            { 
                "domain": "global", 
                "reason": "forbidden", 
                "message": "User does not have sufficient permission for site 'http://www.mysite.io/'. See also: https://support.google.com/webmasters/answer/2451999." 
            } 
        ], 
        "code": 403, 
        "message": "User does not have sufficient permission for site 'http://www.mysite.io/'. See also: https://support.google.com/webmasters/answer/2451999." 
    } 
}

即使调用$client->fetchAccessTokenWithAssertion($my_http_client)能获取到访问令牌,问题仍未解决。接下来我会测试相关方案并反馈结果。


问题分析与解决方案

嘿,我来帮你理清这个问题的核心和解决办法:

核心原因

服务账号的权限是独立的——哪怕它是开发者控制台的项目所有者,也不会自动获得GSC站点的访问权限。GSC的站点权限和开发者控制台的项目权限是完全分离的体系,你的个人GSC受限权限也不会共享给服务账号。

关键解决步骤

你必须把服务账号的邮箱添加到目标GSC站点的权限列表中,具体操作:

  1. 打开GSC后台,找到http://www.mysite.io对应的站点
  2. 进入设置 > 用户和权限页面
  3. 点击「添加用户」,输入服务账号的邮箱(可从你的凭证JSON文件里的client_email字段找到)
  4. 为该账号分配至少「查看权限」(如果需要修改GSC数据则选择「编辑权限」),保存设置

额外注意事项

  • 确保代码中传入的站点地址和GSC后台的站点地址完全一致:包括是否带www、协议是http还是https、末尾是否带斜杠,这些细节必须严格匹配
  • 权限添加后可能需要等待几分钟才会生效,不要立即重复测试
  • 你提到要测试的方案核心逻辑也是给服务账号授权,所以这一步是绕不开的关键操作

完成授权后重新运行代码,应该就能解决这个403权限问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:55:54