Google api 网站管理员API用户对网站没有足够的权限

Google api 网站管理员API用户对网站没有足够的权限,google-api,google-api-php-client,google-webmaster-tools,Google Api,Google Api Php Client,Google Webmaster Tools,我使用GoogleAPI php客户端库访问网站管理员工具数据。当我想列出网站地图时,它出现了致命错误:未捕获的异常“Google\u Service\u exception”(403)用户没有足够的网站权限。另见: 我将服务帐户电子邮件地址添加为我网站的限制用户,但错误仍然存在 最后我找到了答案: 服务帐户与普通的谷歌帐户不同您不能使用它访问特定的资源,即使您为特定的地址“访问”它。有关向网站管理员API授权请求的不同方式,请参阅。服务帐户与普通谷歌帐户不同。您不能使用它来访问特定的资源,即使

我使用GoogleAPI php客户端库访问网站管理员工具数据。当我想列出网站地图时,它出现了致命错误:未捕获的异常“Google\u Service\u exception”(403)用户没有足够的网站权限。另见: 我将服务帐户电子邮件地址添加为我网站的限制用户,但错误仍然存在

最后我找到了答案:
服务帐户与普通的谷歌帐户不同您不能使用它访问特定的资源,即使您为特定的地址“访问”它。有关向网站管理员API授权请求的不同方式,请参阅。

服务帐户与普通谷歌帐户不同。您不能使用它来访问特定的资源,即使您将特定的地址指定为“访问”它

您需要通过管理服务权限。添加您的服务帐户

whatever@developer.gserviceaccount.com


那里。

对我来说,问题不是实际的权限,而是域名的传递方式。下面是我的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”将导致错误
用户没有足够的权限访问站点yourdomain.com

  • 确保已在搜索控制台中以用户身份添加服务帐户电子邮件:

我在使用nodejs时也遇到了同样的问题-在一段曾经工作得令人难以置信的代码上。我有完全相同的问题,这解决了它。但是,对于其他域,它使用“http://”加上域而不是“sc domain:”。如果Google Search Console属性是老式的,带有http[s]:/[www]前缀,那么您需要使用url,而如果它是“域”属性(协议和子域都是统一的,并且您通过DNS验证所有权),那么您需要使用此解决方案。您是如何找到它的?它是在哪里记录的?@matteo不确定,我想我在某处看到了一些使用这种符号的示例代码。我敢肯定不是医生。。。