Google 索引 API - 403 'Forbidden Response'

Google Indexing API - 403 'Forbidden Response'

我正在调用 google 索引 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));
}

调用 API 时,给出的响应是“403 - Forbidden” .

知道这个错误的实际含义吗?我已正确创建服务帐户,但无法从我的开发环境复制成功。

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

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

"Make sure that you have added the service account as an Owner in Google Search Console"

是的。使用以下代码片段检查正文响应以获得更详细的错误消息。

    var body = result.Content.ReadAsStringAsync().Result;

如果错误消息如下所示,那么这是同样的问题。

"message": "Permission denied. Failed to verify the URL ownership."

值得注意的是:缺少新版本的搜索控制台。在左侧菜单的底部是 "go to the old version" link。单击此按钮,然后从齿轮菜单(右上角)中单击 select "verification details"。接下来,单击显示 "verification details" 的 link(说真的!)。在这里,您将最终在页面底部看到经过验证的所有者列表。您可以使用您的服务帐户的电子邮件地址在此处添加新所有者(addr 也可以在您的json 密钥文件中找到)。

添加到@Glennstar 的评论和@JMs 的回复中,不再有旧版本 link(也许我从来没有过旧版本)但是如果您单击用户所有者右侧的 3 个垂直点 ' (you)' 和 select 'manage property owners',然后在下一页上单击域变体右侧的每个 'verification details' link(example.com,http://www.example.com, https://www.example.com 等或任何你拥有的)并添加所有者,即从 json 粘贴到 gserviceaccount.com 电子邮件地址,然后它会说当前所有者也将所有权委托给该电子邮件地址。

一旦该电子邮件地址的状态从 'full' 权限更改为 'owner' 回到搜索控制台页面,我就可以 运行 调用正常和原始 403 错误关于正在无法验证 URL 所有权已消失。谢谢大家,没有这个就一无所知了。

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

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

单击三点按钮,然后单击管理 属性 所有者:

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

我今天一整天都在为此苦苦挣扎...解决方案是我忘记在 google 云控制台中激活索引器 api。