Requisitos 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  add 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 add Crear clave.
  5. En el panel lateral que aparece, selecciona el formato de la clave; 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. Cierra el cuadro de diálogo La clave privada se ha guardado en tu ordenador y, a continuación, haz clic en Listo para volver a la tabla de cuentas de servicio.

Los pasos que se indican a continuación solo son necesarios si quieres dar autoridad sobre todo el dominio de G Suite a la cuenta de servicio.

  1. En la tabla, busca la cuenta de servicio que acabas de crear. En Acciones, haz clic en more_vert y, a continuación, en Editar.
  2. En los detalles de la cuenta de servicio, haz clic en expand_more Mostrar la delegación en todo el dominio y comprueba que esté marcada la casilla Habilitar delegación en todo el dominio de G Suite.
  3. No puedes habilitar la delegación en todo el dominio si todavía no has configurado la pantalla de consentimiento de OAuth de tu aplicación. Sigue las instrucciones que aparecen para configurar esta pantalla; cuando termines, repite los pasos anteriores y vuelve a marcar la casilla.
  4. Haz clic en Guardar para actualizar la cuenta de servicio. A continuación, vuelve a la tabla de cuentas de servicio, donde habrá una columna nueva: Delegación en todo el dominio. Haz clic en Ver ID de cliente para obtener y registrar el ID de cliente.

Verificar la propiedad de un sitio web en Search Console

En este paso, demostrarás que controlas tu propiedad web.

Verificar la propiedad de un sitio web

  1. Sigue los pasos recomendados para verificar que tu propiedad te pertenece.
  2. Una vez que hayas verificado tu propiedad, abre Search Console.
  3. Haz clic en la propiedad verificada.
  4. Haz clic en el icono de la rueda dentada situado junto a la propiedad verificada y selecciona Detalles de verificación.
  5. En Usuarios verificados, haz clic en Añadir un propietario.
  6. Añade como propietario la dirección de correo electrónico de tu cuenta de servicio. Puedes encontrar esta dirección 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 electrónico tiene un formato similar al siguiente:

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

    Por ejemplo, "my-service-account@test-project-42.google.com.iam.gserviceaccount.com".

Obtener un token de acceso

Las llamadas a la API Indexing deben autenticarse con un token de OAuth que se obtiene a cambio de la clave privada. 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 de conexión 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.

Ejemplo

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. 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 de esas llamadas, echa un vistazo al artículo acerca de cómo utilizar la API.