我使用google-api-php-client库来访问网站管理员工具数据。当我想列出站点地图时,它出现了致命错误:未捕获的异常' Google_Service_Exception'(403)用户没有足够的站点权限。另请参阅:https://support.google.com/webmasters/answer/2451999。' 我将服务帐户电子邮件地址添加为我的网站的限制用户,但错误仍然存在。
最后我找到答案: 服务帐户与常规Google帐户不同。 您无法使用它来访问特定资源,即使您提供了特定地址"访问"它。有关您可以向网站站长API授权请求的不同方式,请参阅here。
答案 0 :(得分:1)
服务帐户与常规Google帐户不同。即使您提供了特定地址,也无法使用它来访问特定资源"访问"它。
您需要通过Webmaster Admin管理服务权限。添加您的服务帐户
whatever@developer.gserviceaccount.com
那里。
答案 1 :(得分:1)
对我来说,问题不是实际的许可权,而是域名的传递方式。这是我的Node.js示例,但PHP也是如此:
import {JWT} from 'google-auth-library';
const client = new JWT(
null,
'service-account.json',
null,
['https://www.googleapis.com/auth/webmasters.readonly'],
);
const res = await client.request({
url: 'https://www.googleapis.com/webmasters/v3/sites/sc-domain:yourdomain.com/searchAnalytics/query',
method: 'POST',
data: {
"startDate": "2020-04-01",
"endDate": "2020-05-01",
"dimensions": ["country", "device"]
}
});
console.log(res.data);
请注意语法 sc-domain:yourdomain.com 。传递“ yourdomain.com”将导致错误User does not have sufficient permission for site yourdomain.com
。