如何用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
相关产品推荐
相关产品推荐

