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 服务帐户电子邮件添加为新所有者:

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)。
添加到@Glennstar 的评论和@JMs 回复中,不再有旧版本链接(也许我从未有过旧版本),但是如果您单击用户所有者“(您)”右侧的 3 个垂直点并选择“管理财产”业主,则下一个页面上单击各的‘验证信息’链接到您的域变化的右侧(example.com,http://www.example.com,https://www.example.com等或任何你有)并添加所有者,即粘贴来自 json 的 gserviceaccount.com 电子邮件地址,然后它会说当前所有者委托给该电子邮件地址的所有权。
一旦该电子邮件地址的状态在搜索控制台页面上从“完整”权限更改为“所有者”,我就可以正常运行呼叫,并且最初关于无法验证 URL 所有权的 403 错误消失了。谢谢大家,没有这个就无能为力了。
确保您已将服务帐户添加为 Google Search Console 中的所有者,如下所述: https: //developers.google.com/search/apis/indexing-api/v3/prereqs#verify-site。
我的问题是,我们在 Search Console 中有多个域名条目(带或不带 www、带或不带 https);将服务帐户作为所有者添加到所有 4 个条目后,它正在工作。
| 归档时间: |
|
| 查看次数: |
2182 次 |
| 最近记录: |