Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Đ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 API 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 quy trình tạo dự án trong Google API Console, bật API và tạo thông tin xác thực.
Tạo một tài khoản dịch vụ
- 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.
- Nhấp vào add 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.
- 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.
- 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 addTạo khoá.
- 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.
- 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ụ.
- 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:
- Trước hết, hãy chứng minh bạn sở hữu trang web trong Search Console, sau đó
- 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 sả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/
) để thể hiện trang web của mình (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):
- Mở Search Console.
- Nhấp vào tài sản mà bạn đã xác minh quyền sở hữu.
- Trong danh sách Chủ sở hữu đã xác minh, hãy nhấp vào Thêm chủ sở hữu.
- Thêm email tài khoản dịch vụ của bạn với tư cách là 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 bảng điều khiển Google Cloud.
Địa chỉ email này có định 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ẽ dùng được 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:
- Dùng
https://www.googleapis.com/auth/indexing
làm phạm vi.
- Dùng một trong những điểm cuối theo mô tả trong nội dung Sử dụng API.
- Bao gồm mã truy cập tài khoản dịch vụ.
- 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 hoạ 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 hoạ 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 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.
Trừ phi có lưu ý khác, nội dung của trang này được cấp phép theo Giấy phép ghi nhận tác giả 4.0 của Creative Commons và các mẫu mã lập trình được cấp phép theo Giấy phép Apache 2.0. Để biết thông tin chi tiết, vui lòng tham khảo Chính sách trang web của Google Developers. Java là nhãn hiệu đã đăng ký của Oracle và/hoặc các đơn vị liên kết với Oracle.
Cập nhật lần gần đây nhất: 2025-08-04 UTC.
[null,null,["Cập nhật lần gần đây nhất: 2025-08-04 UTC."],[[["\u003cp\u003eTo utilize the Indexing API, you must first create a project, a service account, and add the service account as a site owner in Search Console.\u003c/p\u003e\n"],["\u003cp\u003eAfter setup, each API call needs an OAuth token, which you get in exchange for your private key using Google's API client libraries and adhering to specific requirements.\u003c/p\u003e\n"],["\u003cp\u003eWhen making a request, you must define the request body and use the appropriate endpoint as detailed in the Indexing API documentation's "Using the API" section.\u003c/p\u003e\n"],["\u003cp\u003eGoogle provides API client libraries in multiple programming languages, such as Python, Java, PHP, and Node.js, to simplify the process of getting OAuth tokens and making API calls.\u003c/p\u003e\n"]]],["To use the Indexing API, you must first create a project in the Google API Console, create a service account with a JSON key, and then add this service account as a delegated owner of your site in Search Console. Finally, get an OAuth access token using your private key to authenticate API calls. Each request must use `https://www.googleapis.com/auth/indexing` as the scope, and include the service account access token. The content gives examples in different programming languages.\n"],null,["Prerequisites for the Indexing API\n\nBefore you can start using the Indexing API, there are a few\nthings you need to do, if you haven't done them already:\n\n- [Create a project for your client](#create-project)\n- [Create a service account](#create-service-account)\n- [Add your service account as a site owner](#verify-site)\n- [Get an access token](#oauth)\n\nCreate a project for your client\n\nBefore you can send requests to the Indexing API, you need to tell Google about your client and\nactivate access to the API. You do this by using the Google API Console to create a project,\nwhich is a named collection of settings and API access information, and register your application.\n\nTo get started using Indexing API, you need to first\n[use\nthe setup tool](https://console.cloud.google.com/start/api?id=indexing.googleapis.com&credential=client_key), which guides you through creating a project in the\nGoogle API Console, enabling the API, and creating credentials.\n\nCreate a service account\n\n1. Open the [**Service accounts** page](https://console.cloud.google.com/iam-admin/serviceaccounts). If prompted, select a project.\n2. Click add **Create Service Account** , enter a name and description for the service account. You can use the default service account ID, or choose a different, unique one. When done click **Create**.\n3. The **Service account permissions (optional)** section that follows is not required. Click **Continue**.\n4. On the **Grant users access to this service account** screen, scroll down to the **Create key** section. Click add **Create key**.\n5. In the side panel that appears, select the format for your key: **JSON** is recommended.\n6. Click **Create** . Your new public/private key pair is generated and downloaded to your machine; it serves as the only copy of this key. For information on how to store it securely, see [Managing service account keys](https://cloud.google.com/iam/docs/understanding-service-accounts#managing_service_account_keys).\n7. Click **Close** on the **Private key saved to your computer** dialog, then click **Done** to return to the table of your service accounts.\n\nAdd your service account as a site owner\n\n\nTo add your service account as a site owner:\n\n1. First prove that you own the site, using Search Console, then\n2. Add your service account as an owner.\n\n1. Prove that you own the site\n\n\n[Verify ownership of your site](https://support.google.com/webmasters/answer/9008080)\nusing Search Console.\nYou can use any verification method supported by Search Console. You can create either\na Domain property (`example.com`) or a URL-prefix property (`https://example.com`\nor `https://example.com/some/path/`) to represent your site (note that sites are called\n*properties* in Search Console).\n\n2. Grant owner status to your service account\n\nNext, add your service account as a\n([delegated](https://support.google.com/webmasters/answer/7687615#permissions-section))\nsite owner:\n\n1. Open [Search Console](https://www.google.com/webmasters/verification/home).\n2. Click the property for which you verified ownership.\n3. In the **Verified owner** list, click **Add an owner**.\n4. Provide your service account email as the delegated owner. You can find your service account email address in two places:\n - The `client_email` field in the JSON private key that you downloaded when you [created your project](#create-project).\n - The **Service account ID** column of the Service Accounts view in the Google Cloud console.\n\n The email address has a format like this: \n \u003cvar translate=\"no\"\u003emy-service-account\u003c/var\u003e`@`\u003cvar translate=\"no\"\u003eproject-name\u003c/var\u003e`.google.com.iam.gserviceaccount.com` \n **For example:** my-service-account@test-project-42.google.com.iam.gserviceaccount.com\n\nGet an access token\n\nEvery call to the Indexing API must be authenticated with an OAuth token that you get\nin exchange for your private key. Each token is good for a span of time.\nGoogle provides [API client libraries](/api-client-library)\nto get OAuth tokens for a number of languages.\n\nRequirements\n\nWhen submitting a request to the Indexing API, your request must:\n\n1. Use `https://www.googleapis.com/auth/indexing` as the scope.\n2. Use one of the endpoints described in [Using the API](/search/apis/indexing-api/v3/using-api).\n3. Include the [service account access token](#create-service-account).\n4. Define the body of the request as described in [Using the API](/search/apis/indexing-api/v3/using-api).\n\nExamples\n\nThe following examples show how to obtain an OAuth access token: \n\nPython\n\nObtains an OAuth token using the [Google API Client library for Python](/api-client-library/python): \n\n```python\nfrom oauth2client.service_account import ServiceAccountCredentials\nimport httplib2\n\nSCOPES = [ \"https://www.googleapis.com/auth/indexing\" ]\nENDPOINT = \"https://indexing.googleapis.com/v3/urlNotifications:publish\"\n\n# service_account_file.json is the private key that you created for your service account.\nJSON_KEY_FILE = \"service_account_file.json\"\n\ncredentials = ServiceAccountCredentials.from_json_keyfile_name(JSON_KEY_FILE, scopes=SCOPES)\n\nhttp = credentials.authorize(httplib2.Http())\n\n# Define contents here as a JSON string.\n# This example shows a simple update request.\n# Other types of requests are described in the next step.\n\ncontent = \"\"\"{\n \\\"url\\\": \\\"http://example.com/jobs/42\\\",\n \\\"type\\\": \\\"URL_UPDATED\\\"\n}\"\"\"\n\nresponse, content = http.request(ENDPOINT, method=\"POST\", body=content)\n```\n\nJava\n\nObtains an OAuth token using the [API Client Library for Java](/api-client-library/java): \n\n```java\nString scopes = \"https://www.googleapis.com/auth/indexing\";\nString endPoint = \"https://indexing.googleapis.com/v3/urlNotifications:publish\";\n\nJsonFactory jsonFactory = new JacksonFactory();\n\n// service_account_file.json is the private key that you created for your service account.\nInputStream in = IOUtils.toInputStream(\"service_account_file.json\");\n\nGoogleCredential credentials =\n GoogleCredential.fromStream(in, this.httpTransport, jsonFactory).createScoped(Collections.singleton(scopes));\n\nGenericUrl genericUrl = new GenericUrl(endPoint);\nHttpRequestFactory requestFactory = this.httpTransport.createRequestFactory();\n\n// Define content here. The structure of the content is described in the next step.\nString content = \"{\"\n + \"\\\"url\\\": \\\"http://example.com/jobs/42\\\",\"\n + \"\\\"type\\\": \\\"URL_UPDATED\\\",\"\n + \"}\";\n\nHttpRequest request =\n requestFactory.buildPostRequest(genericUrl, ByteArrayContent.fromString(\"application/json\", content));\n\ncredentials.initialize(request);\nHttpResponse response = request.execute();\nint statusCode = response.getStatusCode();\n```\n\nPHP\n\nObtains an OAuth token using the [API Client Library for PHP](/api-client-library/php): \n\n```php\nrequire_once 'google-api-php-client/vendor/autoload.php';\n\n$client = new Google_Client();\n\n// service_account_file.json is the private key that you created for your service account.\n$client-\u003esetAuthConfig('service_account_file.json');\n$client-\u003eaddScope('https://www.googleapis.com/auth/indexing');\n\n// Get a Guzzle HTTP Client\n$httpClient = $client-\u003eauthorize();\n$endpoint = 'https://indexing.googleapis.com/v3/urlNotifications:publish';\n\n// Define contents here. The structure of the content is described in the next step.\n$content = '{\n \"url\": \"http://example.com/jobs/42\",\n \"type\": \"URL_UPDATED\"\n}';\n\n$response = $httpClient-\u003epost($endpoint, [ 'body' =\u003e $content ]);\n$status_code = $response-\u003egetStatusCode();\n```\n\nNode.js\n\nObtains an OAuth token using the [Node.js Client Library](https://github.com/google/google-api-nodejs-client): \n\n```javascript\nvar request = require(\"request\");\nvar { google } = require(\"googleapis\");\nvar key = require(\"./service_account.json\");\n\nconst jwtClient = new google.auth.JWT(\n key.client_email,\n null,\n key.private_key,\n [\"https://www.googleapis.com/auth/indexing\"],\n null\n);\n\njwtClient.authorize(function(err, tokens) {\n if (err) {\n console.log(err);\n return;\n }\n let options = {\n url: \"https://indexing.googleapis.com/v3/urlNotifications:publish\",\n method: \"POST\",\n // Your options, which must include the Content-Type and auth headers\n headers: {\n \"Content-Type\": \"application/json\"\n },\n auth: { \"bearer\": tokens.access_token },\n // Define contents here. The structure of the content is described in the next step.\n json: {\n \"url\": \"http://example.com/jobs/42\",\n \"type\": \"URL_UPDATED\"\n }\n };\n request(options, function (error, response, body) {\n // Handle the response\n console.log(body);\n });\n});\n```\n\nIn addition to showing how to obtain a token, these examples show where you can add the body of\nthe request message. For information about the types of calls you can make, and the structure of the\nmessage bodies for those calls, see [Using the API](/search/apis/indexing-api/v3/using-api)."]]