Requisitos previos para usar la API Indexing

Para utilizar la API Indexing, primero tienes que completar estos pasos:

Crear un proyecto para el cliente

Si quieres enviar solicitudes a la API Indexing, primero tienes que informar a Google de tu cliente y activar el acceso a la API. Para hacerlo, ve a la consola de APIs de Google y crea un proyecto, que es un modo de agrupar ajustes e información de acceso a la API bajo un mismo nombre. Luego, registra tu aplicación.

Para empezar, utiliza la herramienta de configuración, que te guiará por el proceso para crear un proyecto en la consola de APIs de Google, habilitar la API y generar credenciales.

Crear una cuenta de servicio

  1. Abre la página Cuentas de servicio. Si se te solicita, selecciona un proyecto.
  2. Haz clic en Crear cuenta de servicio y da un nombre y una descripción a la cuenta de servicio. Puedes usar el ID de cuenta de servicio predeterminado o elegir uno distinto. Cuando termines, haz clic en Crear.
  3. No hace falta completar la sección Permisos de la cuenta de servicio (opcional) que se muestra a continuación. Haz clic en Continuar.
  4. En la pantalla Conceder a los usuarios acceso a esta cuenta de servicio, desplázate hasta la sección Crear clave. Haz clic en Crear clave.
  5. En el panel lateral que aparece, selecciona el formato de la clave; te recomendamos que elijas JSON.
  6. Haz clic en Crear. Se genera un par de clave pública/privada y se descarga en tu ordenador. Este archivo es la única copia de la clave. Para saber cómo guardarla de forma segura, consulta el apartado sobre cómo gestionar claves de cuentas de servicio.
  7. Haz clic en el botón Cerrar del cuadro de diálogo La clave privada se ha guardado en tu ordenador y, a continuación, haz clic en Hecho para volver a la tabla de cuentas de servicio.

Añadir la cuenta de servicio como propietario de un sitio web

Para añadir tu cuenta de servicio como propietario de un sitio web, sigue estos pasos:

  1. Primero, demuestra que eres el propietario del sitio con Search Console.
  2. Luego, añade tu cuenta de servicio como propietario.

1. Demuestra que eres el propietario del sitio

Verifica la propiedad de tu sitio mediante Search Console. Puedes utilizar cualquier método de verificación compatible con Search Console. Para representar tu sitio, puedes crear una propiedad de dominio (example.com) o una propiedad de prefijo de URL (https://example.com o https://example.com/some/path/). Ten en cuenta que los sitios se denominan propiedades en Search Console.

2. Concede el estado de propietario a la cuenta de servicio

A continuación, añade tu cuenta de servicio como propietario (delegado) del sitio:

  1. Abre el Centro para Webmasters.
  2. Haz clic en el sitio cuya propiedad has verificado.
  3. En la lista Propietario verificado, haz clic en Añadir un propietario.
  4. Indica el correo electrónico de tu cuenta de servicio como propietario delegado. Puedes encontrar esa dirección de correo en dos lugares:
    • En el campo client_email de la clave privada JSON que has descargado al crear tu proyecto.
    • En la columna ID de cuenta de servicio que encontrarás en la vista Cuentas de servicio de Developers Console.
    La dirección de correo tiene este formato:
    my-service-account@project-name.google.com.iam.gserviceaccount.com
    Por ejemplo: mi-cuenta-de-servicio@proyecto-de-prueba-42.google.com.iam.gserviceaccount.com

Obtener un token de acceso

Todas las llamadas a la API Indexing deben autenticarse con un token de OAuth que se obtiene a cambio de la clave privada. Cada token es válido durante un periodo determinado. Google ofrece bibliotecas de cliente de APIs para obtener tokens de OAuth en varios lenguajes de programación.

Requisitos

Las solicitudes a la API Indexing deben cumplir estos requisitos:

  1. Tener el permiso https://www.googleapis.com/auth/indexing.
  2. Utilizar uno de los puntos finales que se indican en el artículo sobre cómo usar la API.
  3. Incluir el token de acceso de la cuenta de servicio.
  4. Seguir las directrices de cuerpo que se describen en el artículo sobre cómo usar la API.

Ejemplos

A continuación se muestran ejemplos de cómo se puede obtener un token de acceso de OAuth:

Python

Obtener un token de OAuth mediante la biblioteca de cliente de APIs de Google para 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

Obtener un token de OAuth mediante la biblioteca de cliente de APIs para 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

Obtener un token de OAuth mediante la biblioteca de cliente de APIs para 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

Obtener un token de OAuth mediante la biblioteca de cliente para 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 estos ejemplos, además de mostrarse cómo se obtienen los tokens, se indica dónde puedes añadir el cuerpo del mensaje de solicitud. Para consultar información sobre los tipos de llamadas que puedes hacer y sobre la estructura de los cuerpos del mensaje de esas llamadas, echa un vistazo al artículo Usar la API Indexing.