Indexing API 사용을 위한 기본 요건

Indexing API를 사용하기 전에 완료해야 하는 몇 가지 작업이 있습니다.

클라이언트용 프로젝트 만들기

Indexing API로 요청을 보내려면 먼저 Google에 클라이언트에 관해 알리고 API에 대한 액세스 권한을 활성화해야 합니다. Google API 콘솔을 사용하여 프로젝트(설정과 API 액세스 정보를 묶어 이름을 지정한 모음)를 만든 다음 애플리케이션을 등록하면 됩니다.

Indexing API를 사용하려면 먼저 설정 도구를 사용하여 Google API 콘솔에서 프로젝트를 만들고, API를 사용 설정하고, 사용자 인증 정보를 생성하는 방법을 알아보시기 바랍니다.

서비스 계정 만들기

  1. 서비스 계정 페이지를 엽니다. 메시지가 표시되면 프로젝트를 선택합니다.
  2. 서비스 계정 만들기를 클릭합니다.
  3. 서비스 계정 만들기 창에서 서비스 계정의 이름을 입력하고 새 비공개 키 제공을 선택합니다. 서비스 계정에 G Suite 도메인 전체 수준의 권한을 부여하려면 G Suite 도메인 전체 위임 사용도 함께 선택하고 저장을 클릭합니다.

새로운 공개 키/비공개 키 쌍이 생성되고 기기에 다운로드됩니다. 생성된 파일은 이 키의 유일한 사본입니다. 따라서 안전하게 보관해야 합니다.

Search Console에서 사이트 소유권 확인하기

이 단계에서는 웹 속성을 관리할 권한이 있는지 확인합니다.

사이트의 소유권을 확인하는 방법은 다음과 같습니다.

  1. 속성 소유권 확인을 위한 권장 단계를 따릅니다.
  2. 속성 확인이 완료되면 Search Console을 엽니다.
  3. 확인된 속성을 클릭합니다.
  4. 확인된 속성 옆의 설정 톱니바퀴에서 확인 세부정보를 선택합니다.
  5. 확인된 소유자에서 소유자 추가를 클릭합니다.
  6. 속성에 서비스 계정 이메일 주소를 소유자로 추가합니다. 서비스 계정 이메일 주소는 다음의 두 곳에서 확인할 수 있습니다.
    • 프로젝트를 생성할 때 다운로드한 JSON 비공개 키의 client_email 필드
    • Play Console 내 서비스 계정 뷰의 서비스 계정 ID

    이메일 주소의 형식은 다음과 비슷합니다.

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

    예: 'my-service-account@test-project-42.google.com.iam.gserviceaccount.com'

액세스 토큰 가져오기

Indexing API를 호출하려면 비공개 키 대신 가져오는 OAuth 토큰을 사용하여 호출을 인증해야 합니다. Google에서는 여러 언어로 OAuth 토큰을 가져올 수 있는 API 클라이언트 라이브러리를 제공합니다.

요건

Indexing API에 요청을 제출할 때 요청이 다음을 따라야 합니다.

  1. 범위로 https://www.googleapis.com/auth/indexing을 사용합니다.
  2. API 사용에 설명된 엔드포인트 중 하나를 사용합니다.
  3. 서비스 계정 액세스 토큰을 포함합니다.
  4. API 사용에 설명된 대로 요청의 본문을 정의합니다.

다음 예에서 OAuth 액세스 토큰을 받는 방법을 확인할 수 있습니다.

Python

Python용 Google API 클라이언트 라이브러리를 사용하여 OAuth 토큰 받기:

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)

자바

자바용 API 클라이언트 라이브러리를 사용하여 OAuth 토큰 받기:

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

PHP용 API 클라이언트 라이브러리를 사용하여 OAuth 토큰 받기:

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

Node.js 클라이언트 라이브러리를 사용하여 OAuth 토큰 받기:

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);
  });
});

이 예시를 통해 토큰을 받는 방법뿐 아니라 요청 메시지 본문을 어디에 추가할 수 있는지도 알 수 있습니다. 생성할 수 있는 호출 유형과 이러한 호출의 메시지 본문 구조를 자세히 알아보려면 API 사용을 참조하세요.

다음에 대한 의견 보내기...