Điều kiện tiên quyết để sử dụng API Lập chỉ mục

Để có thể sử dụng API Lập chỉ mục, bạn cần hoàn thành một số bước sau đây:

Tạo một dự án cho ứng dụng của bạn

Trước khi bạn có thể gửi yêu cầu tới API lập chỉ mục, bạn cần cho Google biết về ứng dụng của mình và kích hoạt quyền truy cập vào API. Bạn có thể làm điều này bằng cách sử dụng Google Developers Console để tạo dự án, là một tập hợp có tên gồm các tuỳ chọn cài đặt và thông tin truy cập API, sau đó đăng ký ứng dụng của bạn.

Để bắt đầu sử dụng API Lập chỉ mục, trước tiên bạn cần dùng công cụ thiết lập. Công cụ này sẽ hướng dẫn bạn trong quy trình tạo dự án trong Google API Console, bật API và tạo bằng chứng xác thực.

Tạo một tài khoản dịch vụ

  1. Mở trang Tài khoản dịch vụ. Nếu thấy lời nhắc, hãy chọn một dự án.
  2. Nhấp vào Tạo tài khoản dịch vụ rồi nhập tên và phần mô tả cho tài khoản dịch vụ. Bạn có thể sử dụng mã tài khoản dịch vụ mặc định hoặc chọn một mã riêng biệt khác. Khi hoàn tất, hãy nhấp vào Tạo.
  3. Bạn không bắt buộc phải làm gì trong phần Quyền tài khoản dịch vụ (tuỳ chọn) sau đó. Hãy nhấp vào Tiếp tục.
  4. Trên màn hình Cấp cho người dùng quyền truy cập vào tài khoản dịch vụ này, hãy cuộn xuống phần Tạo khoá. Nhấp vào Tạo khoá.
  5. Khi bảng điều khiển bên xuất hiện, hãy chọn định dạng cho khoá của bạn ở trên đó: bạn nên chọn JSON.
  6. Nhấp vào Tạo. Cặp khoá công khai/riêng tư mới của bạn sẽ được tạo và tải xuống máy của bạn; đây là bản sao duy nhất của khoá này. Để biết thông tin về cách lưu trữ khoá an toàn, hãy xem Quản lý khoá tài khoản dịch vụ.
  7. Nhấp vào Đóng trên hộp thoại Khoá riêng tư đã lưu vào máy tính của bạn, sau đó nhấp vào Xong để trở về bảng tài khoản dịch vụ.

Thêm tài khoản dịch vụ của bạn làm chủ sở hữu trang web

Cách thêm tài khoản dịch vụ của bạn làm chủ sở hữu trang web:

  1. Trước hết, hãy chứng minh bạn sở hữu trang web trong Search Console, sau đó
  2. Thêm tài khoản dịch vụ của bạn làm một chủ sở hữu.

1. Chứng minh việc bạn sở hữu trang web

Xác minh quyền sở hữu của bạn đối với trang web trong Search Console. Bạn có thể sử dụng phương thức xác minh bất kỳ mà Search Console hỗ trợ. Bạn có thể tạo một Tài nguyên miền (example.com) hoặc một tài sản có tiền tố URL (https://example.com hoặc https://example.com/some/path/) để đại diện cho trang web của mình. (Xin lưu ý rằng trong Search Console, các trang web được gọi là tài sản.)

2. Cấp trạng thái chủ sở hữu cho tài khoản dịch vụ của bạn

Tiếp theo, hãy thêm tài khoản dịch vụ làm một chủ sở hữu trang web (được uỷ quyền):

  1. Mở Trung tâm quản trị web.
  2. Nhấp vào tài sản mà bạn đã xác minh quyền sở hữu.
  3. Trong danh sách Chủ sở hữu đã xác minh, hãy nhấp vào Thêm chủ sở hữu.
  4. Thêm email tài khoản dịch vụ của bạn với tư cách là một chủ sở hữu được uỷ quyền. Bạn có thể tìm được địa chỉ email tài khoản dịch vụ của mình tại hai nơi:
    • Trường client_email trong khoá riêng tư JSON mà bạn đã tải xuống khi tạo dự án.
    • Cột Mã tài khoản dịch vụ ở chế độ xem Tài khoản dịch vụ trong Developers Console.
    Địa chỉ email này có dạng như sau:
    my-service-account@project-name.google.com.iam.gserviceaccount.com
    Ví dụ: my-service-account@test-project-42.google.com.iam.gserviceaccount.com

Lấy mã truy cập

Mọi lệnh gọi đến API Lập chỉ mục đều phải được xác thực bằng mã thông báo OAuth mà bạn nhận được khi đổi lấy khoá riêng tư. Mỗi mã thông báo sẽ hữu dụng trong một khoảng thời gian. Google cung cấp các thư viện ứng dụng API để lấy mã thông báo OAuth cho một số ngôn ngữ.

Yêu cầu

Khi bạn gửi yêu cầu tới API lập chỉ mục, yêu cầu của bạn phải:

  1. Dùng https://www.googleapis.com/auth/indexing làm phạm vi.
  2. Dùng một trong những điểm cuối theo mô tả trong nội dung Sử dụng API.
  3. Bao gồm mã truy cập tài khoản dịch vụ.
  4. Xác định phần nội dung của yêu cầu theo cách mô tả trong phần Sử dụng API.

Ví dụ

Các ví dụ sau đây minh họa cách lấy mã truy cập OAuth:

Python

Lấy mã thông báo OAuth bằng Thư viện ứng dụng Google API cho 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

Lấy mã thông báo OAuth bằng Thư viện ứng dụng API cho 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

Lấy mã thông báo OAuth bằng Thư viện ứng dụng API cho 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

Lấy mã thông báo OAuth bằng Thư viện ứng dụng 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);
  });
});

Ngoài việc minh họa cách lấy mã thông báo, các ví dụ này còn cho biết vị trí bạn có thể thêm phần nội dung của thông báo trong yêu cầu. Để biết thông tin về các loại lệnh gọi bạn có thể thực hiện và cấu trúc của nội dung thông báo cho các lệnh gọi đó, hãy xem phần Sử dụng API.