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 lors de la création d'un projet dans la console d'API Google, ainsi que lors de l'activation de l'API et de la création 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 add 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 add 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.

Les étapes suivantes ne sont nécessaires que si vous souhaitez attribuer une autorité de domaine G Suite au compte de service.

  1. Recherchez dans le tableau le compte de service que vous venez de créer. Sous Actions, cliquez sur more_vert, puis sur Modifier.
  2. Dans les détails du compte de service, cliquez sur expand_more Afficher la délégation au niveau du domaine, puis assurez-vous que la case Activer la délégation au niveau du domaine G Suite est cochée.
  3. Notez que vous devez configurer l'écran d'autorisation OAuth de votre application avant de pouvoir activer la délégation au niveau du domaine. Suivez les instructions indiquées à l'écran pour configurer l'écran d'autorisation OAuth, puis répétez les étapes ci-dessus et vérifiez à nouveau que la case est cochée.
  4. Cliquez sur Enregistrer pour mettre à jour le compte de service et revenir au tableau des comptes de service. Une nouvelle colonne, Délégation au niveau du domaine, est visible. Cliquez sur Afficher l'ID client pour consulter l'ID client et en prendre note.

Valider la propriété d'un site dans la Search Console

Cette étape a pour but de prouver que votre propriété Web vous appartient réellement.

Pour valider la propriété de votre site, procédez comme suit :

  1. Suivez les étapes recommandées pour valider la propriété d'un site.
  2. Une fois que la propriété a été validée, ouvrez la Search Console.
  3. Cliquez sur la propriété validée.
  4. Dans la section "Paramètres" située à côté de la propriété validée, sélectionnez Détails de la validation.
  5. Sous Propriétaires validés, cliquez sur Ajouter un propriétaire.
  6. Ajoutez l'adresse e-mail de votre compte de service en tant que propriétaire au site. 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 de la forme suivante :

    my-service-account@project-name.google.com.iam.gserviceaccount.com

    Exemple : "my-service-account@test-project-42.google.com.iam.gserviceaccount.com"

Obtenir un jeton d'accès

Pour appeler l'API d'indexation, l'appel doit être authentifié avec un jeton OAuth que vous recevez en échange de votre clé privée. 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. Elle doit utiliser https://www.googleapis.com/auth/indexing comme champ d'application.
  2. Elle doit utiliser l'un des points de terminaison décrits dans la section relative à l'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 la section relative à l'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. 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 relative à l'utilisation de l'API.