Pré-requisitos da API Indexing

Antes de começar a usar a API Indexing, há alguns procedimentos que você precisa realizar, caso ainda não tenha realizado:

Criar um projeto para o cliente

Antes de enviar solicitações à API Indexing, você precisa informar ao Google seu cliente e ativar o acesso à API. Faça isso usando o Console de APIs do Google para criar um projeto, que é uma coleção nomeada de configurações e informações de acesso à API, e registre seu aplicativo.

Para começar a usar a API Indexing, primeiro use a ferramenta de configuração, que oferece orientações sobre como criar um projeto no Console de APIs do Google, ativar a API e criar credenciais.

Criar uma conta de serviço

  1. Abra a página Contas de serviço. Se solicitado, selecione um projeto.
  2. Clique em Criar conta de serviço, digite um nome e uma descrição para a conta correspondente. Você pode usar o ID da conta de serviço padrão ou escolher um código diferente e único. Quando terminar, clique em Criar.
  3. A seção seguinte ,Permissões da conta de serviço (opcional), não é necessária. Clique em Continuar.
  4. Em Conceda aos usuários acesso a essa conta de serviço, role a tela para baixo até a seção Criar chave. Clique em Criar chave.
  5. No painel lateral exibido, selecione o formato da sua chave. JSON é a opção recomendada.
  6. Clique em Criar. Seu novo par de chave pública/privada é gerado, e o download é feito na sua máquina. Essa é a única cópia da chave. Para saber mais sobre como armazenar com segurança, consulte Como gerenciar chaves de contas de serviço.
  7. Clique em Fechar na caixa de diálogo Chave privada salva no seu computador e clique em Concluir para retornar à tabela das suas contas de serviço.

As etapas a seguir só serão necessárias se você quiser conceder autoridade em todo o domínio do G Suite à conta de serviço.

  1. Localize a conta de serviço recém-criada na tabela. Em Ações, clique em e depois em Editar.
  2. Nos detalhes da conta de serviço, clique em Mostrar delegação em todo o domínio e verifique se a caixa de seleção Ativar a delegação em todo o domínio G Suite está marcada.
  3. Se você ainda não tiver configurado a tela de consentimento do OAuth do seu app, faça isso antes de ativar a delegação em todo o domínio. Siga as instruções para configurar a tela de consentimento do OAuth, repita as etapas acima e marque novamente a caixa de seleção.
  4. Clique em Salvar para atualizar a conta de serviço e retornar à tabela de contas de serviço. A nova coluna Delegação em todo o domínio será exibida. Clique em Ver ID do cliente para visualizar e anotar esse ID.

Verificar a propriedade do site no Search Console

Nesta etapa, você verificará o controle sobre sua propriedade da Web.

Para verificar a propriedade do seu site, faça o seguinte:

  1. Siga as etapas recomendadas para verificar sua propriedade.
  2. Depois que sua propriedade tiver sido verificada, abra o Search Console.
  3. Clique na propriedade verificada.
  4. Selecione Detalhes da verificação no ícone de configurações (engrenagem) ao lado da propriedade verificada.
  5. Em Proprietários verificados, clique em Adicionar um proprietário.
  6. Adicione o endereço de e-mail da sua conta de serviço como proprietário. É possível encontrar o endereço de e-mail da sua conta de serviço em dois lugares:
    • No campo client_email na chave privada JSON que você transferiu por download quando criou seu projeto.
    • Na coluna ID da conta de serviço da tela "Contas de serviço" no Developers Console.

    O endereço de e-mail é parecido com este:

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

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

Receber um token de acesso

Para chamar a API Indexing, a chamada precisa ser autenticada com um token OAuth recebido em troca da sua chave privada. O Google fornece bibliotecas de cliente de API para receber tokens OAuth de várias linguagens.

Requisitos

Para enviar uma solicitação para a API Indexing, as seguintes etapas são obrigatórias:

  1. Use https://www.googleapis.com/auth/indexing como o escopo.
  2. Use um dos endpoints descritos em Como usar a API.
  3. Inclua o token de acesso da conta de serviço.
  4. Defina o corpo da solicitação conforme descrito em Como usar a API.

Exemplos

Os exemplos a seguir mostram como receber um token de acesso do OAuth:

Python

Recebe um token OAuth usando a Biblioteca de cliente de APIs do 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

Recebe um token OAuth usando a 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

Recebe um token OAuth usando a 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

Recebe um token OAuth usando a 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);
  });
});

Além de mostrar como receber um token, esses exemplos mostram onde você pode adicionar o corpo da mensagem de solicitação. Para ver informações sobre os tipos de chamada que você pode fazer e a estrutura do corpo das mensagens para essas chamadas, consulte Como usar a API.