Requisitos previos para la API de Indexing

Para de poder comenzar a usar la API de Indexing, debes completar algunas acciones, si es que todavía no lo hiciste:

Crea un proyecto para tu cliente

Para poder enviar solicitudes a la API de Indexing, primero debes notificar a Google acerca de tu cliente y activar el acceso a la API. Puedes hacerlo con Google API Console para crear un proyecto (una colección determinada de configuraciones y datos de acceso a la API) y registrar la aplicación.

Para comenzar a usar la API de Indexing, primero debes emplear la herramienta de configuración, que te guiará para crear un proyecto en Google API Console, habilitar la API y crear credenciales.

Crea 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 e ingresa un nombre y una descripción para el público del servicio. Puedes usar el ID predeterminado de la cuenta de servicio o elegir uno que sea único y diferente. Cuando hayas terminado, haz clic en Crear.
  3. No es necesaria la sección de Permisos de la cuenta de servicio (opcional) que aparece a continuación. Haz clic en Continuar.
  4. En la pantalla Otorga a usuarios acceso a esta cuenta de servicio, desplázate hacia abajo hasta encontrar la sección Crear clave. Haz clic en add Crear clave.
  5. En el panel lateral que aparece, selecciona el formato para tu clave: se recomienda el código JSON.
  6. Haz clic en Crear. Ya se generó y descargó el nuevo par de claves pública y privada en tu equipo, que será la única copia. Para obtener más información sobre cómo almacenarla de forma segura, consulta Cómo administrar claves para cuentas de servicio.
  7. Haz clic en Cerrar en el diálogo Clave privada guardada en tu computadora y luego haz clic en Listo para regresar a la tabla de tus cuentas de servicio.

Los siguientes pasos solo son necesarios si quieres otorgar autoridad sobre todo el dominio G Suite a la cuenta de servicio.

  1. Encuentra la cuenta de servicio creada recientemente en la tabla. En Acciones, haz clic en more_vert y, luego, en Editar.
  2. En los detalles de la cuenta de servicio, haz clic en expand_more Mostrar delegación de todo el dominio y, luego, asegúrate de que la casilla de verificación Habilitar la delegación de todo el dominio de G Suite esté marcada.
  3. Si aún no configuraste la pantalla de consentimiento de OAuth de tu app, debes hacerlo antes de habilitar la delegación de todo el dominio. Sigue las instrucciones que se indiquen para configurar la pantalla de consentimiento de OAuth y, luego, repite los pasos y vuelve a marcar la casilla de verificación.
  4. Haz clic en Guardar para actualizar la cuenta de servicio y, luego, regresa a la tabla de cuentas de servicio. Verás una nueva columna: Delegación de todo el dominio. Haz clic en Ver ID de cliente para obtener y crear una nota del ID de cliente.

Cómo verificar la propiedad del sitio en Search Console

En este paso, verificarás que tienes el control de tu propiedad web.

Para verificar la propiedad de tu sitio, haz lo siguiente:

  1. Sigue los pasos recomendados para verificar la propiedad.
  2. Una vez completada la verificación, abre Search Console.
  3. Haz clic en tu propiedad verificada.
  4. Selecciona Detalles de verificación en el engranaje de Configuración junto a la propiedad verificada.
  5. En la opción de propietarios verificados, haz clic en la opción para agregar un propietario.
  6. Agrega la dirección de correo electrónico de tu cuenta de servicio como titular de la propiedad. Puedes encontrarla en dos lugares:
    • El campo client_email de la clave privada de JSON que descargaste cuando creaste el proyecto.
    • La columna ID de la cuenta de servicio de la vista de cuenta de servicios en 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".

Cómo obtener un token de acceso

Para llamar a la API de Indexing, la llamada debe estar autenticada con un token OAuth que obtienes a cambio de la clave privada. Google proporciona bibliotecas cliente de API a fin de obtener tokens OAuth para varios lenguajes.

Requisitos

Cuando envíes una solicitud a la API de Indexing, sigue estos pasos:

  1. Usa https://www.googleapis.com/auth/indexing como alcance.
  2. Utiliza uno de los extremos que se describen en Cómo usar la API.
  3. Incluye el token de acceso de la cuenta de servicio.
  4. Define el cuerpo de la solicitud como se describe en Cómo usar la API.

Ejemplos

En los siguientes ejemplos, se muestra cómo obtener un token de acceso OAuth.

Python

Obtiene un token OAuth token mediante la biblioteca cliente de la API 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

Obtiene un token OAuth con la biblioteca cliente de la API de Google 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

Obtiene un token OAuth con la biblioteca cliente de la API de Google 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

Obtiene un token OAuth con la biblioteca cliente de 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);
  });
});

Además de mostrar cómo obtener un token, estos ejemplos muestran el punto en el que puedes agregar el cuerpo del mensaje de la solicitud. Para obtener información acerca de los tipos de llamada que puedes hacer y la estructura de los cuerpos del mensaje para ellas, consulta Cómo usar la API.

Enviar comentarios sobre…