Google Indexing API-403“禁止响应”

Joe*_*son 5 php google-api symfony google-api-php-client google-indexing-api

我正在致电google indexing API进行职位发布:

private $client;
private $httpClient;

public function initClient($kernel)
{
    $this->client = new \Google_Client();
    $this->client->setAuthConfig(JSON_KEY_HERE);
    $this->client->addScope('https://www.googleapis.com/auth/indexing');
    $this->httpClient = $this->client->authorize();
}

public function sendJob()
{
    $endpoint = 'https://indexing.googleapis.com/v3/urlNotifications:publish';
    $content = "{
                    \"url\": \"URL_HERE\",
                    \"type\": \"URL_UPDATED\"
                }";

    $response = $this->httpClient->post($endpoint, array('body' => $content));
}
Run Code Online (Sandbox Code Playgroud)

调用API时,给出的响应为'403-Forbidden'。

任何想法这个错误实际上意味着什么?我已经正确创建了服务帐户,但是无法从我的开发环境中复制成功。

小智 11

经过几天的头痛,这就是答案。打开您的 Google 搜索控制台。

先决条件:您必须已经有一个谷歌服务帐户

单击三点按钮,然后单击管理财产所有者:

单击三点按钮,然后单击管理财产所有者

将 google 服务帐户电子邮件添加为新所有者:

将 Google 服务帐户电子邮件添加为新所有者


JM.*_*JM. 10

“确保已在Google Search Console中将服务帐户添加为所有者”

是的 使用以下代码片段检查主体响应,以获取更详细的错误消息。

    var body = result.Content.ReadAsStringAsync().Result;
Run Code Online (Sandbox Code Playgroud)

如果错误msg如下所示,则这是相同的问题。

“ message”:“权限被拒绝。无法验证URL所有权。”

值得注意的是: 缺少新版本的Search Console。左侧菜单的底部是“转到旧版本”链接。点击此按钮,然后从齿轮菜单(右上)中选择“验证详细信息”。接下来,单击显示“验证详细信息”的链接(严重!)。在这里,您最终将在页面底部看到经过验证的所有者的列表。您可以使用服务帐户的电子邮件地址在此处添加新所有者(也可以在json密钥文件中找到addr)。

  • 投票赞成**值得一提的**部分。新版GSC不允许添加所有者,而只能添加“完全”或“受限”权限...,而且似乎“完全”权限还不够。谢谢JM! (7认同)
  • 好的,我终于知道如何在新的 Search Console 上添加所有者了。单击“设置”、“用户和权限”,然后单击**当前**所有者上的省略号以管理财产所有者。 (5认同)

edi*_*bai 5

添加到@Glennstar 的评论和@JMs 回复中,不再有旧版本链接(也许我从未有过旧版本),但是如果您单击用户所有者“(您)”右侧的 3 个垂直点并选择“管理财产”业主,则下一个页面上单击各的‘验证信息’链接到您的域变化的右侧(example.com,http://www.example.comhttps://www.example.com等或任何你有)并添加所有者,即粘贴来自 json 的 gserviceaccount.com 电子邮件地址,然后它会说当前所有者委托给该电子邮件地址的所有权。

一旦该电子邮件地址的状态在搜索控制台页面上从“完整”权限更改为“所有者”,我就可以正常运行呼叫,并且最初关于无法验证 URL 所有权的 403 错误消失了。谢谢大家,没有这个就无能为力了。


Mar*_*uay 4

确保您已将服务帐户添加为 Google Search Console 中的所有者,如下所述: https: //developers.google.com/search/apis/indexing-api/v3/prereqs#verify-site

我的问题是,我们在 Search Console 中有多个域名条目(带或不带 www、带或不带 https);将服务帐户作为所有者添加到所有 4 个条目后,它正在工作。