Điều kiện cần thực hiện để sử dụng API lập chỉ mục

Trước khi có thể sử dụng API lập chỉ mục, có một số điều bạn cần làm nếu chưa thực hiện chúng:

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 tùy 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 sử 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 thông tin đăng nhập.

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 add Tạo tài khoản dịch vụ , nhập tên và mô tả cho tài khoản dịch vụ. Bạn có thể sử dụng ID tài khoản dịch vụ mặc định hoặc chọn một ID 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ụ (tùy 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 khóa. Nhấp vào add Tạo khóa.
  5. Trong bảng điều khiển bên xuất hiện, chọn định dạng cho khóa của bạn: bạn nên chọn JSON.
  6. Nhấp vào Tạo. Cặp khóa 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 khóa này. Để biết thông tin về cách lưu trữ khóa an toàn, hãy xem Quản lý khóa tài khoản dịch vụ.
  7. Nhấp vào Đóng trên hộp thoại Khóa 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ụ.

Các bước sau đây chỉ cần thiết nếu bạn muốn cấp cho G Suite quyền trên toàn miền đối với tài khoản dịch vụ.

  1. Tìm tài khoản dịch vụ mới được tạo trong bảng. Trong phần Hành động, nhấp vào more_vert rồi Chỉnh sửa.
  2. Trong chi tiết tài khoản dịch vụ, nhấp vào expand_more Hiển thị ủy quyền trên toàn miền, sau đó đảm bảo chọn hộp kiểm Bật ủy quyền trên toàn miền cho G Suite.
  3. Nếu chưa định cấu hình màn hình lấy sự đồng ý OAuth của ứng dụng, bạn phải làm như vậy trước khi có thể bật ủy quyền trên toàn miền. Làm theo các hướng dẫn trên màn hình để định cấu hình màn hình lấy sự đồng ý OAuth, sau đó lặp lại các bước trên và chọn lại hộp kiểm.
  4. Nhấp vào Lưu để cập nhật tài khoản dịch vụ và quay lại bảng tài khoản dịch vụ. Một cột mới, Ủy quyền trên toàn miền, sẽ hiển thị. Nhấp vào Xem ID ứng dụng khách để biết và ghi lại ID ứng dụng khách.

Xác minh quyền sở hữu trang web trong Search Console

Trong bước này, bạn sẽ xác minh rằng bạn có quyền kiểm soát đối với sản phẩm web của mình.

Để xác minh quyền sở hữu trang web của bạn:

  1. Thực hiện theo các bước đề xuất để xác minh quyền sở hữu sản phẩm của bạn.
  2. Sau khi sản phẩm của bạn đã được xác mình, hãy mở Search Console.
  3. Nhấp vào sản phẩm đã xác minh nói trên.
  4. Chọn Chi tiết xác minh từ biểu tượng bánh răng Cài đặt bên cạnh sản phẩm đã xác minh của bạn.
  5. Bên dưới phần Chủ sở hữu đã xác minh, hãy nhấp vào Thêm chủ sở hữu.
  6. Thêm địa chỉ email tài khoản dịch vụ của bạn dưới dạng chủ sở hữu vào sản phẩm. Bạn có thể tìm thấy địa chỉ email tài khoản dịch vụ của mình ở hai vị trí:
    • Trường client_email trong khóa riêng tư JSON mà bạn đã tải xuống khi tạo dự án của mình.
    • Cột ID tài khoản dịch vụ của chế độ xem Tài khoản dịch vụ trong Developer Console.

    Địa chỉ email có định dạng tương tự 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

Để gọi API lập chỉ mục, cuộc gọi phải được xác thực bằng mã thông báo OAuth mà bạn nhận được sau khi cung cấp khóa riêng tư của mình. 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. Sử dụng https://www.googleapis.com/auth/indexing làm phạm vi.
  2. Sử dụng một trong các điểm cuối được mô tả trong phần 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. 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 cuộc 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 cuộc gọi đó, hãy xem phần Sử dụng API.

Gửi phản hồi về...