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

如何用PHP从Google站长工具获取站点地图?代码问题求助

解决Google Search Console站点地图API返回空数组的问题

嘿,我帮你梳理了代码里的几个关键错误,这应该就是你拿到空数组的原因:

1. 令牌处理流程完全错误

你同时调用了refreshToken()和authenticate(),这俩方法的使用场景根本不兼容:

  • refreshToken()本身就会帮你用刷新令牌换取新的访问令牌,不需要再调用authenticate()——这个方法是用来处理首次授权时拿到的授权码的,不是给刷新令牌用的。
  • 你最后手动setAccessToken($newtoken['access_token'])也不对,setAccessToken()需要传入完整的令牌数组,而且其实你根本不需要手动做这一步,refreshToken()执行后客户端已经自动处理好令牌了。

2. 多余的开发者密钥设置

setDeveloperKey('MY-DEVELOPER-KEY')这行完全没必要,因为你用的是OAuth 2.0认证流程,开发者密钥是给API_KEY模式用的,两种认证模式冲突,直接删掉这行就行。

修正后的完整代码

$client = new Google_Client();
$client->setAuthConfig('client_secret.json');
$client->setAccessType("offline");
$client->setIncludeGrantedScopes(true);
$client->setApprovalPrompt('auto');
$client->addScope(Google_Service_Webmasters::WEBMASTERS);
$client->setRedirectUri('REDIRECT_URL'); // 注意你原来拼写错了,是REDIRECT不是REDIERCT

// 用刷新令牌获取有效访问令牌,这一步后客户端会自动管理令牌
$client->refreshToken('MYREFRESH-TOKEN');

$service = new Google_Service_Webmasters($client);

// 注意:站点URL和站点地图URL必须是完整的(带http/https前缀)
$results = $service->sitemaps->get('https://your-website-url.com', 'https://your-website-url.com/sitemap.xml');

print_r($results);

最后再检查这几个关键点

  • 确认你的刷新令牌是有效的:如果刷新令牌过期或被吊销,得重新走OAuth授权流程获取新的。
  • 站点必须已经在Google Search Console里验证通过,且你用的OAuth账号拥有该站点的管理权限。
  • 检查是否启用了Google Search Console API:去Google Cloud控制台确认这个API已经开启。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:38:48