【问题标题】:Google Indexing API谷歌索引 API
【发布时间】:2018-09-05 05:36:38
【问题描述】:

我有一个工作门户网站(Wordpress + PHP),我想为我的网站使用 Google Indexing API。我对 GoogleAPI 没有任何经验,所以我只是阅读了他们的指导。 根据指南,使用 Indexing API 有 3 个步骤:

  1. 通过启用 Indexing API、创建新的服务帐号并在 Search Console 中验证所有权来完成先决条件。
  2. 获取访问令牌以验证您的 API 调用。
  3. 发送请求以通知 Google 有新的、更新的或删除的网页。

我完成了第 1 步,但第 2 步和第 3 步真的让我很困惑。好像我需要获取带有编码的 OAuth 令牌,但我应该把这些代码放在哪里?对于使用 API,他们向我展示了这个示例:

POST https://indexing.googleapis.com/v3/urlNotifications:publish
{
  "url": "https://careers.google.com/jobs/google/technical-writer",
  "type": "URL_UPDATED"
}

再次,我不确定我应该将这些块代码放在哪里使用 API。任何人都可以知道这一点,可以逐步解释如何为我做这件事吗?最后一个问题:因为我的网站每天大约有 10 到 15 个新职位发布。每当有人发布新工作时,我可以以某种方式将此索引 API 自动发送请求设置为 Google 吗? 问候,

【问题讨论】:

    标签: php google-api google-oauth google-indexing-api


    【解决方案1】:

    您应该在您的请求中将其作为不记名身份验证标头传递。

    授权:承载

    您也可以将它作为请求字符串的一部分传递,但我不记得这是否适用于 post 调用。

    POST https://indexing.googleapis.com/v3/urlNotifications:publish?Access_token=XXXX
    {
      "url": "https://careers.google.com/jobs/google/technical-writer",
      "type": "URL_UPDATED"
    }
    

    如果您使用 php,您应该考虑使用 Google php client library,它将为您处理大部分问题。这是他们在示例中推荐的here

    require_once 'google-api-php-client/vendor/autoload.php';
    
    $client = new Google_Client();
    
    // service_account_file.json is the private key that you created for your service account.
    $client->setAuthConfig('service_account_file.json');
    $client->addScope('https://www.googleapis.com/auth/indexing');
    
    // Get a Guzzle HTTP Client
    $httpClient = $client->authorize();
    $endpoint = 'https://indexing.googleapis.com/v3/urlNotifications:publish';
    
    // Define contents here. The structure of the content is described in the next step.
    $content = "{
      \"url\": \"http://example.com/jobs/42\",
      \"type\": \"URL_UPDATED"
    }";
    
    $response = $httpClient->post($endpoint, [ 'body' => $content ]);
    $status_code = $response->getStatusCode();
    

    确保您已正确设置服务帐号create service account

    【讨论】:

    • 感谢您的回答,但我仍然不知道将这些代码放在哪里。我是否需要制作一个新文件并将其放在服务器上或安装插件并将这些代码放在我的网站 Header 中?
    • 是的,一个 php 脚本必须在您服务器上的文件中。调用本身必须经过身份验证。这是编程它不是您可以放置​​在您的网站上并运行它的东西。您将不得不查找如何使用 php 发送经过身份验证的 HTTP Post 或使用 google 推荐的客户端库。
    • 我在同一条船上,你有没有得到任何地方,有点。我计划在创建/保存/更新作业后使用 WordPress“save_post”钩子向 functions.php 添加一些代码以触发此操作(以及混合 ACF 字段,仅在它实际上是一个职位发布时触发)。
    • $client->authorize();应该是 $client->authorize();和 \"type\": \"URL_UPDATED" 应该是 \"type\": \"URL_UPDATED\"
    【解决方案2】:

    您必须确保在 Search Console 中验证网站所有权:https://www.google.com/webmasters/tools/home

    1. 点击您的已验证资源。
    2. 从已验证资产旁边的“设置”齿轮中选择“验证详细信息”。
    3. 在已验证的所有者下,点击添加所有者。
    4. 将您的服务帐户电子邮件地址添加为资产的所有者。

    您可以确认您的服务帐户,例如 my-service-account@project-name.google.com.iam.gserviceaccount.com

    【讨论】:

      【解决方案3】:

      激活 Google 索引 API:https://console.developers.google.com/apis/library/indexing.googleapis.com

      在 PHP 中,您可以通过以下方式找到有关错误的更多信息:

      $body = $response->getBody();
      $stringBody = (string) $body;
      

      【讨论】:

      • 这个解决方案非常简单,但没有其他地方记录,谢谢
      【解决方案4】:

      Rank Math 刚刚发布了免费的 WordPress 索引插件,你可以试一试,它会自动完成所有的事情。更多详情:https://rankmath.com/blog/google-indexing-api/

      【讨论】:

        猜你喜欢
        • 2014-01-06
        • 2017-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多