Conditions requises pour l'utilisation de l'API d'indexation

Avant de pouvoir utiliser l'API d'indexation, vous devez effectuer certaines tâches, si ce n'est pas déjà fait :

Créer un projet pour votre client

Avant de pouvoir envoyer des requêtes à l'API d'indexation, vous devez fournir à Google des informations spécifiques sur votre client et activer l'accès à l'API. Pour ce faire, utilisez la console d'API Google afin de créer un projet (collection spécifique de paramètres et d'informations d'accès à l'API), puis enregistrez votre application.

Pour commencer à vous servir de l'API d'indexation, vous devez d'abord utiliser l'outil de configuration. Celui-ci vous guide pour créer un projet dans la console d'API Google, ainsi que pour activer l'API et créer des informations d'identification.

Créer un compte de service

  1. Ouvrez la page Comptes de service. Si vous y êtes invité, sélectionnez un projet.
  2. Cliquez sur Créer un compte de service, puis saisissez un nom et une description pour ce compte. Vous pouvez utiliser l'ID de compte de service par défaut ou en choisir un autre, unique. Une fois que vous avez terminé, cliquez sur Créer.
  3. La section Autorisations associées au compte de service (facultatif) qui suit n'est pas requise. Cliquez sur Continuer.
  4. Sur l'écran Autoriser les utilisateurs à accéder à ce compte de service, accédez à la section Créer une clé. Cliquez sur Créer une clé.
  5. Dans le panneau latéral qui s'affiche, sélectionnez le format de la clé. JSON est conseillé.
  6. Cliquez sur Créer. La nouvelle paire de clés publique et privée est générée et téléchargée sur votre ordinateur. Il s'agit de la seule copie dont vous disposez. Découvrez comment stocker cette clé en toute sécurité.
  7. Cliquez sur Fermer dans la boîte de dialogue Clé privée enregistrée sur votre ordinateur, puis cliquez sur OK pour afficher le tableau des comptes de service.

Ajouter votre compte de service en tant que propriétaire de site

Pour ajouter votre compte de service en tant que propriétaire de site, procédez comme suit :

  1. Commencez par prouver que vous êtes bien le propriétaire du site via la Search Console.
  2. Ajoutez ensuite votre compte de service en tant que propriétaire.

1. Confirmer que vous êtes bien le propriétaire du site

Validez la propriété de votre site à l'aide de la Search Console. Vous pouvez utiliser n'importe quelle méthode de validation acceptée par la Search Console. Vous pouvez créer une propriété de domaine (example.com) ou une propriété avec préfixe d'URL (https://example.com ou https://example.com/some/path/) pour représenter votre site. Notez que les sites sont appelés propriétés dans la Search Console.

2. Attribuer le statut de propriétaire à votre compte de service

Ajoutez ensuite votre compte de service en tant que propriétaire du site (délégué) :

  1. Ouvrez le Centre pour les webmasters.
  2. Cliquez sur le site dont vous avez validé la propriété.
  3. Dans la liste Propriétaires validés, cliquez sur Ajouter un propriétaire.
  4. Indiquez l'adresse e-mail de votre compte de service en tant que propriétaire délégué. Cette adresse est disponible à deux endroits :
    • Dans le champ client_email de la clé privée JSON que vous avez téléchargée lors de la création du projet
    • Dans la colonne ID du compte de service de la vue "Comptes de service" de la Developers Console
    L'adresse e-mail se présente sous cette forme :
    my-service-account@project-name.google.com.iam.gserviceaccount.com
    Exemple : mon-compte-de-service@projet-test-42.google.com.iam.gserviceaccount.com

Obtenir un jeton d'accès

Chaque appel vers l'API d'indexation doit être authentifié avec un jeton OAuth que vous recevez en échange de votre clé privée. Chaque jeton est valable pendant une certaine période. Google fournit des bibliothèques clientes d'API permettant d'obtenir des jetons OAuth pour plusieurs langages.

Conditions requises

Lorsque vous soumettez une requête à l'API d'indexation, celle-ci doit respecter les conditions suivantes :

  1. Utilisez https://www.googleapis.com/auth/indexing comme champ d'application.
  2. Elle doit utiliser l'un des points de terminaison décrits dans Utilisation de l'API.
  3. Elle doit inclure le jeton d'accès au compte de service.
  4. Elle doit définir le corps de la requête, comme décrit dans Utilisation de l'API.

Exemples

Les exemples suivants illustrent comment obtenir un jeton d'accès OAuth :

Python

Permet d'obtenir un jeton OAuth via la bibliothèque cliente des API Google pour Python :

from oauth2client.service_account import ServiceAccountCredentials
import httplib2

SCOPES = [ "https://www.googleapis.com/auth/indexing" ]
ENDPOINT = "https://indexing.googleapis.com/v3/urlNotifications:publish"

# service_account_file.json is the private key that you created for your service account.
JSON_KEY_FILE = "service_account_file.json"

credentials = ServiceAccountCredentials.from_json_keyfile_name(JSON_KEY_FILE, scopes=SCOPES)

http = credentials.authorize(httplib2.Http())

# Define contents here as a JSON string.
# This example shows a simple update request.
# Other types of requests are described in the next step.

content = """{
  \"url\": \"http://example.com/jobs/42\",
  \"type\": \"URL_UPDATED\"
}"""

response, content = http.request(ENDPOINT, method="POST", body=content)

Java

Permet d'obtenir un jeton OAuth via la bibliothèque cliente des API pour Java :

String scopes = "https://www.googleapis.com/auth/indexing";
String endPoint = "https://indexing.googleapis.com/v3/urlNotifications:publish";

JsonFactory jsonFactory = new JacksonFactory();

// service_account_file.json is the private key that you created for your service account.
InputStream in = IOUtils.toInputStream("service_account_file.json");

GoogleCredential credentials =
  GoogleCredential.fromStream(in, this.httpTransport, jsonFactory).createScoped(Collections.singleton(scopes));

GenericUrl genericUrl = new GenericUrl(endPoint);
HttpRequestFactory requestFactory = this.httpTransport.createRequestFactory();

// Define content here. The structure of the content is described in the next step.
String content = "{"
  + "\"url\": \"http://example.com/jobs/42\","
  + "\"type\": \"URL_UPDATED\","
  + "}";

HttpRequest request =
  requestFactory.buildPostRequest(genericUrl, ByteArrayContent.fromString("application/json", content));

credentials.initialize(request);
HttpResponse response = request.execute();
int statusCode = response.getStatusCode();

PHP

Permet d'obtenir un jeton OAuth via la bibliothèque cliente des API pour PHP :

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();

Node.js

Permet d'obtenir un jeton OAuth via la bibliothèque cliente pour Node.js :

var request = require("request");
var { google } = require("googleapis");
var key = require("./service_account.json");

const jwtClient = new google.auth.JWT(
  key.client_email,
  null,
  key.private_key,
  ["https://www.googleapis.com/auth/indexing"],
  null
);

jwtClient.authorize(function(err, tokens) {
  if (err) {
    console.log(err);
    return;
  }
  let options = {
    url: "https://indexing.googleapis.com/v3/urlNotifications:publish",
    method: "POST",
    // Your options, which must include the Content-Type and auth headers
    headers: {
      "Content-Type": "application/json"
    },
    auth: { "bearer": tokens.access_token },
    // Define contents here. The structure of the content is described in the next step.
    json: {
      "url": "http://example.com/jobs/42",
      "type": "URL_UPDATED"
    }
  };
  request(options, function (error, response, body) {
    // Handle the response
    console.log(body);
  });
});

En plus de montrer comment obtenir un jeton, ces exemples indiquent où vous pouvez ajouter le corps du message de la requête. Pour plus d'informations sur les types d'appels que vous pouvez effectuer et sur la structure des corps de message pour ces appels, consultez la section Utiliser l'API d'indexation.