使用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站点的权限列表中,具体操作:
- 打开GSC后台,找到
http://www.mysite.io对应的站点 - 进入设置 > 用户和权限页面
- 点击「添加用户」,输入服务账号的邮箱(可从你的凭证JSON文件里的
client_email字段找到) - 为该账号分配至少「查看权限」(如果需要修改GSC数据则选择「编辑权限」),保存设置
额外注意事项
- 确保代码中传入的站点地址和GSC后台的站点地址完全一致:包括是否带
www、协议是http还是https、末尾是否带斜杠,这些细节必须严格匹配 - 权限添加后可能需要等待几分钟才会生效,不要立即重复测试
- 你提到要测试的方案核心逻辑也是给服务账号授权,所以这一步是绕不开的关键操作
完成授权后重新运行代码,应该就能解决这个403权限问题了。
内容的提问来源于stack exchange,提问作者DiDebru
相关产品推荐
相关产品推荐

