Google Search Console API:如何解决 "User does not have sufficient permission for site"? (当用户有权限时)
Google Search Console API: How do I Solve "User does not have sufficient permission for site"? (When User Has Permissions)
我正在尝试通过他们的 Node 包使用 Google 的 Search Console API,我的代码如下所示:
const auth = new GoogleAuth({
scopes: 'https://www.googleapis.com/auth/webmasters.readonly',
});
const webmasters = google.webmasters('v3');
const params = {
auth,
siteUrl: 'example.com',
resource: {
startDate: '2015-08-25',
endDate: '2015-08-25',
dimensions: ['query', 'page'],
rowLimit: 10,
},
aggregationType: 'byPage',
};
const res = await webmasters.searchanalytics.query(params);
console.log(res.data);
...除了在我的版本中 example.com
已被替换为我的实际域。
我在命令行调用它:
GOOGLE_APPLICATION_CREDENTIALS="/path/to/service_key.json" node index.js
我创建了一个服务帐户,服务密钥 JSON 文件来自它。该服务帐户可以访问我的 Search Console 帐户。当我查看 https://search.google.com/search-console/users 时,我在那里看到服务用户,并且在权限列中它有“完全”。
任何人都可以帮助我理解为什么我 运行 我的代码时会出现以下错误吗?
{
message: "User does not have sufficient permission for site 'http://example.com'. See also: https://support.google.com/webmasters/answer/2451999.",
domain: 'global',
reason: 'forbidden'
}
URL 提到的 https://support.google.com/webmasters/answer/2451999 只是将我链接到搜索控制台用户页面......(再次)表示服务用户具有完全权限。
在 google 论坛和其他互联网上扎根后,我明白了为什么会这样。
需要从Google云中复制服务帐户电子邮件,长而奇怪的格式(例如:whiskey-tango-foxtrot@certain-something-0123456.iam.gserviceaccount.com):https://console.cloud.google.com/apis/credentials to Search Console https://search.google.com/u/1/search-console/users,作为“完整站点”用户。
确保您已通过 API 或使用此工具添加该网站(从 Search Console 开始):https://developers.google.com/webmaster-tools/v1/sites/add
然后,当您执行“list_sites”请求时,您的站点应该列在此处并且permission_level
是“siteFullUser”(根据步骤1)
当您add_site
或执行query
API请求时,请务必按照上述步骤设置siteUrl
,例如:http://www.example.com/
(对于 URL-prefix 属性)或 sc-domain:example.com
(对于域 属性)
快乐编码
我正在尝试通过他们的 Node 包使用 Google 的 Search Console API,我的代码如下所示:
const auth = new GoogleAuth({
scopes: 'https://www.googleapis.com/auth/webmasters.readonly',
});
const webmasters = google.webmasters('v3');
const params = {
auth,
siteUrl: 'example.com',
resource: {
startDate: '2015-08-25',
endDate: '2015-08-25',
dimensions: ['query', 'page'],
rowLimit: 10,
},
aggregationType: 'byPage',
};
const res = await webmasters.searchanalytics.query(params);
console.log(res.data);
...除了在我的版本中 example.com
已被替换为我的实际域。
我在命令行调用它:
GOOGLE_APPLICATION_CREDENTIALS="/path/to/service_key.json" node index.js
我创建了一个服务帐户,服务密钥 JSON 文件来自它。该服务帐户可以访问我的 Search Console 帐户。当我查看 https://search.google.com/search-console/users 时,我在那里看到服务用户,并且在权限列中它有“完全”。
任何人都可以帮助我理解为什么我 运行 我的代码时会出现以下错误吗?
{
message: "User does not have sufficient permission for site 'http://example.com'. See also: https://support.google.com/webmasters/answer/2451999.",
domain: 'global',
reason: 'forbidden'
}
URL 提到的 https://support.google.com/webmasters/answer/2451999 只是将我链接到搜索控制台用户页面......(再次)表示服务用户具有完全权限。
在 google 论坛和其他互联网上扎根后,我明白了为什么会这样。
需要从Google云中复制服务帐户电子邮件,长而奇怪的格式(例如:whiskey-tango-foxtrot@certain-something-0123456.iam.gserviceaccount.com):https://console.cloud.google.com/apis/credentials to Search Console https://search.google.com/u/1/search-console/users,作为“完整站点”用户。
确保您已通过 API 或使用此工具添加该网站(从 Search Console 开始):https://developers.google.com/webmaster-tools/v1/sites/add
然后,当您执行“list_sites”请求时,您的站点应该列在此处并且
permission_level
是“siteFullUser”(根据步骤1)当您
add_site
或执行query
API请求时,请务必按照上述步骤设置siteUrl
,例如:http://www.example.com/
(对于 URL-prefix 属性)或sc-domain:example.com
(对于域 属性) 快乐编码