Indexing API 사용을 위한 기본 요건

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

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

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

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

서비스 계정 만들기

  1. 서비스 계정 페이지를 엽니다. 메시지가 표시되면 프로젝트를 선택합니다.
  2. add 서비스 계정 만들기를 클릭하고 서비스 계정의 이름과 설명을 입력합니다. 기본 서비스 계정 ID를 사용할 수도 있고 다른 고유한 ID를 선택할 수도 있습니다. 완료하면 만들기를 클릭합니다.
  3. 이어지는 서비스 계정 권한(선택사항) 섹션은 선택하지 않아도 됩니다. 계속을 클릭합니다.
  4. 사용자에게 이 서비스 계정에 대한 액세스 권한 부여 화면에서 키 만들기 섹션이 나올 때까지 아래로 스크롤합니다. add 키 만들기를 클릭합니다.
  5. 표시되는 측면 패널에서 키에 사용할 형식을 선택합니다. JSON이 권장됩니다.
  6. 만들기를 클릭합니다. 새로운 공개 키/비공개 키 쌍이 생성되어 기기에 다운로드됩니다. 생성된 파일은 이 키의 유일한 사본으로 사용됩니다. 키를 안전하게 보관하는 방법을 자세히 알아보려면 서비스 계정 키 관리를 참조하세요.
  7. 개인 키가 컴퓨터에 저장되었습니다 대화상자에서 닫기를 클릭한 다음 완료를 클릭하여 서비스 계정 표로 돌아갑니다.

다음 단계는 G Suite 도메인 전체 권한을 서비스 계정에 부여하고자 할 경에만 필요합니다.

  1. 표에서 새로 만든 서비스 계정을 찾습니다. 작업에서 more_vert를 클릭하고 수정을 클릭합니다.
  2. 서비스 계정 세부정보에서 expand_more 도메인 전체 위임 보기를 클릭하고 G Suite 도메인 전체 위임 체크박스가 선택되어 있는지 확인합니다.
  3. 앱의 OAuth 동의 화면을 아직 설정하지 않은 경우 이 화면을 설정해야 도메인 전체 위임을 사용할 수 있습니다. 화면의 지시에 따라 OAuth 동의 화면을 설정한 다음 위 단계를 반복하고 체크박스를 다시 선택합니다.
  4. 저장을 클릭해 서비스 계정을 업데이트하고 서비스 계정 표로 돌아갑니다. 도메인 전체 위임이라는 새로운 열이 표시됩니다. 클라이언트 ID를 확인하고 적어 두려면 클라이언트 ID 보기를 클릭합니다.

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 사용을 참조하세요.

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