Tài liệu này mô tả giao thức mà API dữ liệu của Google sử dụng, bao gồm thông tin về truy vấn, hình thức của kết quả, v.v.
Để biết thêm thông tin về API Dữ liệu của Google, hãy xem tài liệu Hướng dẫn dành cho nhà phát triển dữ liệu của Google và Hướng dẫn về giao thức.
Đối tượng người xem
Tài liệu này dành cho những ai muốn tìm hiểu chi tiết về định dạng XML và giao thức mà API Dữ liệu Google sử dụng.
Nếu chỉ muốn viết mã sử dụng API ứng dụng dữ liệu của Google, thì bạn không cần biết những chi tiết này; thay vào đó, bạn có thể sử dụng thư viện ứng dụng dành riêng cho ngôn ngữ.
Nhưng nếu bạn muốn hiểu giao thức, hãy đọc tài liệu này. Ví dụ: bạn có thể muốn đọc tài liệu này để giúp bạn thực hiện bất kỳ tác vụ nào sau đây:
- đánh giá cấu trúc Dữ liệu của Google
- lập trình bằng giao thức mà không cần sử dụng thư viện ứng dụng Google Data được cung cấp
- viết thư viện ứng dụng bằng ngôn ngữ mới
Tài liệu này giả định rằng bạn hiểu được các khái niệm cơ bản về XML, vùng chứa tên, nguồn cấp dữ liệu được phân phối và các yêu cầu GET
, POST
, PUT
và DELETE
trong HTTP, cũng như khái niệm "tài nguyên" của HTTP. Để biết thêm thông tin về những vấn đề đó, hãy xem phần Tài nguyên bổ sung của tài liệu này.
Tài liệu này không dựa vào bất kỳ ngôn ngữ lập trình cụ thể nào. Bạn có thể gửi và nhận thông báo Dữ liệu của Google bằng cách sử dụng bất kỳ ngôn ngữ lập trình nào cho phép bạn đưa ra yêu cầu HTTP và phân tích cú pháp phản hồi dựa trên XML.
Chi tiết về giao thức
Phần này mô tả định dạng tài liệu và cú pháp truy vấn của dữ liệu trên Google.
Định dạng tài liệu
Dữ liệu của Google, Atom và RSS 2.0 đều có cùng một mô hình dữ liệu cơ bản: một vùng chứa lưu giữ cả một số dữ liệu toàn cầu và số lượng mục nhập bất kỳ. Đối với mỗi giao thức, định dạng được xác định bởi một giản đồ cơ sở, nhưng có thể mở rộng định dạng này bằng cách sử dụng không gian tên nước ngoài.
API Dữ liệu của Google có thể sử dụng định dạng phân phối Atom (đối với cả lượt đọc và lượt ghi) hoặc định dạng RSS (chỉ dành cho lượt đọc).
Atom là định dạng mặc định của Google Data. Để yêu cầu phản hồi ở định dạng RSS, hãy sử dụng tham số /alt=rss/
; để biết thêm thông tin, hãy xem phần Yêu cầu truy vấn.
Khi bạn yêu cầu dữ liệu ở định dạng RSS, Google Data sẽ cung cấp nguồn cấp dữ liệu (hoặc đại diện khác cho tài nguyên) ở định dạng RSS. Nếu không có thuộc tính RSS tương đương cho một thuộc tính Google Data nhất định, thì Dữ liệu của Google sẽ sử dụng thuộc tính Atom, gắn nhãn bằng một vùng chứa tên thích hợp để cho biết đó là phần mở rộng cho RSS.
Lưu ý: Hầu hết nguồn cấp dữ liệu của Google ở định dạng Atom đều sử dụng vùng chứa tên Atom làm không gian tên mặc định bằng cách chỉ định thuộc tính xmlns
trên phần tử nguồn cấp dữ liệu. Xem phần ví dụ để biết cách thực hiện. Do đó, những ví dụ trong tài liệu này không chỉ định rõ ràng atom:
cho các phần tử trong nguồn cấp dữ liệu định dạng Atom.
Các bảng sau đây trình bày các đại diện Atom và RSS cho các thành phần của giản đồ. Tất cả dữ liệu không được đề cập trong những bảng này đều được coi là XML thuần tuý và hiển thị giống nhau trong cả hai đại diện. Trừ phi có quy định khác, các phần tử XML trong một cột nhất định nằm trong không gian tên tương ứng với cột đó. Bản tóm tắt này sử dụng ký hiệu JavaScript tiêu chuẩn: cụ thể là các dấu gạch chéo cho biết hệ thống phân cấp phần tử và dấu @ cho biết một thuộc tính của phần tử.
Trong mỗi bảng sau, bạn cần điền các mục được làm nổi bật.
Bảng sau đây cho thấy các thành phần của một Nguồn cấp dữ liệu của Google:
Mục giản đồ nguồn cấp dữ liệu | Đại diện nguyên tử | Phần trình bày RSS |
---|---|---|
Tiêu đề của nguồn cấp dữ liệu | /feed/title |
/rss/channel/title |
ID nguồn cấp dữ liệu | /feed/id |
/rss/channel/atom:id |
Đường liên kết HTML của nguồn cấp dữ liệu | /feed/link[@rel="alternate"] [@type="text/html"]/@href |
/rss/channel/link |
Mô tả nguồn cấp dữ liệu | /feed/subtitle |
/rss/channel/description |
Ngôn ngữ của nguồn cấp dữ liệu | /feed/@xml:lang |
/rss/channel/language |
Bản quyền trên nguồn cấp dữ liệu | /feed/rights |
/rss/channel/copyright |
Tác giả của nguồn cấp dữ liệu |
(Bắt buộc trong một số trường hợp; xem thông số kỹ thuật Atom.) |
/rss/channel/managingEditor |
Ngày cập nhật nguồn cấp dữ liệu gần đây nhất | /feed/updated (Định dạng RFC 3339) |
/rss/channel/lastBuildDate (Định dạng RFC 822) |
Danh mục nguồn cấp dữ liệu | /feed/category/@term |
/rss/channel/category |
Lược đồ danh mục nguồn cấp dữ liệu | /feed/category/@scheme |
/rss/channel/category/@domain |
Trình tạo nguồn cấp dữ liệu | /feed/generator /feed/generator/@uri |
/rss/channel/generator |
Biểu tượng nguồn cấp dữ liệu | /feed/icon |
/rss/channel/image/url (trừ trường hợp còn có biểu trưng, trong trường hợp này, biểu tượng không có trong nguồn cấp dữ liệu) |
Biểu tượng của nguồn cấp dữ liệu | /feed/logo |
/rss/channel/image/url |
Bảng sau trình bày các thành phần của nguồn cấp dữ liệu kết quả tìm kiếm trên Google Data. Lưu ý rằng Dữ liệu trên Google sẽ hiển thị một số phần tử Phản hồi của OpenSearch 1.1 trong nguồn cấp dữ liệu về kết quả tìm kiếm.
Mục lược đồ nguồn cấp dữ liệu kết quả tìm kiếm | Đại diện nguyên tử | Nội dung đại diện RSS/OpenSearch |
---|---|---|
Số lượng kết quả tìm kiếm | /feed/openSearch:totalResults |
/rss/channel/openSearch:totalResults |
Chỉ mục bắt đầu kết quả tìm kiếm | /feed/openSearch:startIndex |
/rss/channel/openSearch:startIndex |
Số kết quả tìm kiếm trên mỗi trang | /feed/openSearch:itemsPerPage |
/rss/channel/openSearch:itemsPerPage |
Bảng sau đây cho thấy các thành phần của một mục dữ liệu trên Google:
Mục giản đồ mục nhập | Đại diện nguyên tử | Phần trình bày RSS |
---|---|---|
Mã mục nhập | /feed/entry/id |
/rss/channel/item/guid |
Mã phiên bản mục nhập | Tùy chọn được nhúng trong EditURI (xem phần Đồng thời tối ưu của tài liệu này). | — |
Tiêu đề mục nhập | /feed/entry/title |
/rss/channel/item/title |
Đường liên kết đến mục nhập | /feed/entry/link |
/rss/channel/item/link /rss/channel/item/enclosure /rss/channel/item/comments |
Tóm tắt thông tin đăng ký |
(Bắt buộc trong một số trường hợp; xem thông số kỹ thuật Atom.) |
/rss/channel/item/atom:summary |
Nội dung nhập |
(Nếu không có phần tử nội dung nào thì mục nhập phải chứa ít nhất một phần tử |
/rss/channel/item/description |
Tác giả nhập môn |
(Bắt buộc trong một số trường hợp; xem thông số kỹ thuật Atom.) |
/rss/channel/item/author |
Danh mục nhập | /feed/entry/category/@term |
/rss/channel/item/category |
Lược đồ danh mục mục nhập | /feed/entry/category/@scheme |
/rss/channel/item/category/@domain |
Ngày phát hành mục | /feed/entry/published (RFC 3339) |
/rss/channel/item/pubDate (RFC 822) |
Ngày cập nhật mục nhập | /feed/entry/updated (RFC 3339) |
/rss/channel/item/atom:updated (RFC 3339) |
Cụm từ tìm kiếm
Phần này mô tả cách sử dụng hệ thống truy vấn.
Nguyên lý thiết kế mô hình truy vấn
Mô hình truy vấn có chủ ý rất đơn giản. Nguyên tắc cơ bản là:
- Các truy vấn được biểu thị dưới dạng URI HTTP, chứ không phải là tiêu đề HTTP hoặc như một phần của trọng tải. Một lợi ích của phương pháp này là bạn có thể liên kết với truy vấn.
- Các thuộc tính nằm trong phạm vi một mục. Vì vậy, không có cách nào để gửi một cụm từ tìm kiếm tương quan như "tìm tất cả email từ những người đã gửi cho tôi ít nhất 10 email trong hôm nay".
- Tập hợp các thuộc tính mà truy vấn có thể dự đoán rất hạn chế; hầu hết các truy vấn chỉ đơn giản là truy vấn tìm kiếm văn bản đầy đủ.
- Thứ tự kết quả phụ thuộc vào việc triển khai.
- Giao thức này có thể mở rộng tự nhiên. Nếu muốn hiển thị các thuộc tính hoặc sắp xếp bổ sung trong dịch vụ, bạn có thể dễ dàng thực hiện thông qua việc giới thiệu các tham số mới.
Yêu cầu truy vấn
Một ứng dụng truy vấn dịch vụ Dữ liệu của Google bằng cách gửi một yêu cầu HTTP GET
. URI truy vấn bao gồm URI của tài nguyên (được gọi là FeedURI trong Atom) sau đó là tham số truy vấn. Hầu hết các tham số truy vấn được biểu thị dưới dạng tham số URL ?name=value[&...]
truyền thống. Thông số danh mục được xử lý khác nhau; hãy xem bên dưới.
Ví dụ: nếu URI URI là http://www.example.com/feeds/jo
, thì bạn có thể gửi truy vấn với URI sau:
http://www.example.com/feeds/jo?q=Darcy&updated-min=2005-04-19T15:30:00Z
Dịch vụ dữ liệu của Google hỗ trợ HTTP có điều kiện GET
. Họ đặt tiêu đề phản hồi Sửa đổi lần cuối dựa trên giá trị của phần tử <atom:updated>
trong nguồn cấp dữ liệu hoặc mục nhập được trả về. Một ứng dụng có thể gửi lại giá trị này dưới dạng giá trị của tiêu đề yêu cầu If-Sửa đổi-Từ để tránh truy xuất lại nội dung nếu nội dung đó chưa thay đổi. Nếu nội dung không thay đổi kể từ thời gian If-Sửa đổi từ thì dịch vụ Dữ liệu của Google sẽ trả về phản hồi HTTP 304 (Không sửa đổi).
Dịch vụ dữ liệu của Google phải hỗ trợ các truy vấn danh mục và truy vấn alt
; không bắt buộc phải hỗ trợ các tham số khác. Việc chuyển một thông số chuẩn không được dịch vụ nhất định hiểu được sẽ dẫn đến một phản hồi 403 Forbidden
. Truyền một tham số không chuẩn không được hỗ trợ sẽ dẫn đến một phản hồi 400 Bad Request
. Để biết thông tin về các mã trạng thái khác, hãy xem phần Mã trạng thái HTTP của tài liệu này.
Các tham số truy vấn chuẩn được tóm tắt trong bảng sau. Tất cả giá trị thông số cần phải được mã hóa URL.
Thông số | Ý nghĩa | Ghi chú |
---|---|---|
q |
Chuỗi truy vấn văn bản đầy đủ |
|
/-/category |
Bộ lọc danh mục |
|
category |
Bộ lọc danh mục |
|
author |
Tác giả nhập môn |
|
alt |
Loại hình đại diện thay thế |
|
updated-min , updated-max |
Ranh giới vào ngày cập nhật mục nhập |
|
published-min , published-max |
Ranh giới vào ngày xuất bản mục |
|
start-index |
1 chỉ mục dựa trên kết quả đầu tiên được truy xuất |
|
max-results |
Số lượng kết quả truy xuất tối đa | Đối với dịch vụ có giá trị max-results mặc định (để giới hạn kích thước nguồn cấp dữ liệu mặc định), bạn có thể chỉ định một số rất lớn nếu muốn nhận toàn bộ nguồn cấp dữ liệu. |
entryID | Mã của một mục cụ thể sẽ được truy xuất |
|
Giới thiệu về truy vấn danh mục
Chúng tôi quyết định chỉ định một định dạng không bình thường cho các truy vấn danh mục. Thay vì một truy vấn như sau:
http://example.com/jo?category=Fritz&category=2006
chúng tôi sử dụng:
http://example.com/jo/-/Fritz/2006
Phương pháp này xác định một tài nguyên không cần sử dụng tham số truy vấn và tạo ra URI sạch hơn. Chúng tôi chọn phương pháp này cho danh mục vì chúng tôi nghĩ rằng truy vấn danh mục sẽ là truy vấn phổ biến nhất.
Hạn chế của phương pháp này là chúng tôi yêu cầu bạn sử dụng /-/
trong truy vấn danh mục để dịch vụ dữ liệu của Google có thể phân biệt truy vấn danh mục với URI tài nguyên khác, chẳng hạn như http://example.com/jo/MyPost/comments
.
Câu trả lời cho cụm từ tìm kiếm
Các truy vấn trả về nguồn cấp dữ liệu Atom, mục nhập Atom hoặc nguồn cấp dữ liệu RSS, tuỳ thuộc vào thông số yêu cầu.
Kết quả truy vấn chứa các phần tử OpenSearch sau đây ngay trong phần tử <feed>
hoặc phần tử <channel>
(tuỳ thuộc vào việc kết quả là Atom hay RSS):
openSearch:totalResults
- Tổng số kết quả tìm kiếm cho cụm từ tìm kiếm (không nhất thiết phải có tất cả kết quả trong nguồn cấp dữ liệu về kết quả).
openSearch:startIndex
- Chỉ mục dựa trên 1 của kết quả đầu tiên.
openSearch:itemsPerPage
- Số lượng mục tối đa xuất hiện trên một trang. Điều này cho phép khách hàng tạo các đường liên kết trực tiếp đến mọi nhóm trang tiếp theo. Tuy nhiên, nếu sử dụng số điện thoại này có sai lầm có thể xảy ra, hãy xem lưu ý về
start-index
trong bảng trong phần Yêu cầu truy vấn.
Nguồn cấp dữ liệu phản hồi và mục nhập Atom cũng có thể bao gồm mọi phần tử Atom và Google Data sau đây (cũng như các phần tử khác đã liệt kê trong quy cách Atom):
<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="..."/>
- Chỉ định URI nơi có thể truy xuất nguồn cấp dữ liệu Atom hoàn chỉnh.
<link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml" href="..."/>
- Chỉ định URI URI của nguồn cấp dữ liệu Atom (nơi có thể đăng các mục nhập mới).
<link rel="self" type="..." href="..."/>
- Chứa URI của tài nguyên này. Giá trị của thuộc tính
type
phụ thuộc vào định dạng đã yêu cầu. Nếu không có dữ liệu thay đổi trong thời gian chờ đợi, việc gửi một GET khác đến URI này sẽ trả về cùng một phản hồi. <link rel="previous" type="application/atom+xml" href="..."/>
- Chỉ định URI của phần trước của tập hợp kết quả truy vấn này, nếu phần này được chia nhỏ.
<link rel="next" type="application/atom+xml" href="..."/>
- Chỉ định URI của phân đoạn tiếp theo của nhóm kết quả truy vấn này nếu phân đoạn.
<link rel="edit" type="application/atom+xml" href="..."/>
- Chỉ định URI URI của mục nhập Atom (nơi bạn gửi mục đã cập nhật).
Dưới đây là nội dung phản hồi mẫu, để phản hồi một truy vấn tìm kiếm:
<?xml version="1.0" encoding="UTF-8"?> <feed xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"> <id>http://www.example.com/feed/1234.1/posts/full</id> <updated>2005-09-16T00:42:06Z</updated> <title type="text">Books and Romance with Jo and Liz</title> <link rel="alternate" type="text/html" href="http://www.example.net/"/> <link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.example.com/feed/1234.1/posts/full"/> <link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml" href="http://www.example.com/feed/1234.1/posts/full"/> <link rel="self" type="application/atom+xml" href="http://www.example.com/feed/1234.1/posts/full"/> <author> <name>Elizabeth Bennet</name> <email>liz@gmail.com</email> </author> <generator version="1.0" uri="http://www.example.com">Example Generator Engine</generator> <openSearch:totalResults>2</openSearch:totalResults> <openSearch:startIndex>0</openSearch:startIndex> <entry> <id>http://www.example.com/feed/1234.1/posts/full/4521614025009481151</id> <published>2005-01-09T08:00:00Z</published> <updated>2005-01-09T08:00:00Z</updated> <category scheme="http://www.example.com/type" term="blog.post"/> <title type="text">This is the title of entry 1009</title> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml">This is the entry body of entry 1009</div> </content> <link rel="alternate" type="text/html" href="http://www.example.com/posturl"/> <link rel="edit" type="application/atom+xml" href="http://www.example.com/feed/1234.1/posts/full/4521614025009481151"/> <author> <name>Elizabeth Bennet</name> <email>liz@gmail.com</email> </author> </entry> <entry> <id>http://www.example.com/feed/1234.1/posts/full/3067545004648931569</id> <published>2005-01-07T08:00:00Z</published> <updated>2005-01-07T08:02:00Z</updated> <category scheme="http://www.example.com/type" term="blog.post"/> <title type="text">This is the title of entry 1007</title> <content type="xhtml"> <div xmlns="http://www.w3.org/1999/xhtml">This is the entry body of entry 1007</div> </content> <link rel="alternate" type="text/html" href="http://www.example.com/posturl"/> <link rel="edit" type="application/atom+xml" href="http://www.example.com/feed/1234.1/posts/full/3067545004648931569"/> <author> <name>Elizabeth Bennet</name> <email>liz@gmail.com</email> </author> </entry> </feed>
Nếu nguồn cấp dữ liệu được yêu cầu ở định dạng Atom, nếu không có tham số truy vấn nào được chỉ định và nếu kết quả không chứa tất cả các mục nhập, thì phần tử sau đây sẽ được chèn vào nguồn cấp dữ liệu cấp cao nhất: <link rel="next" type="application/atom+xml" href="..."/>
. Nó trỏ đến một nguồn cấp dữ liệu chứa tập hợp các mục nhập tiếp theo. Các nhóm tiếp theo chứa một phần tử <link rel="previous" type="application/atom+xml" href="..."/>
tương ứng. Bằng cách nhấp vào tất cả các đường liên kết tiếp theo, ứng dụng có thể truy xuất tất cả mục nhập từ một nguồn cấp dữ liệu.
Mã trạng thái HTTP
Bảng sau đây mô tả ý nghĩa của các mã trạng thái HTTP trong ngữ cảnh của Dịch vụ dữ liệu của Google.
Mã | Giải thích |
---|---|
200 OK | Không có lỗi. |
201 ĐÃ TẠO | Đã tạo thành công tài nguyên. |
304 KHÔNG ĐƯỢC CHỈNH SỬA | Tài nguyên không thay đổi kể từ thời gian chỉ định trong tiêu đề If-Sửa đổi-Từ khi yêu cầu. |
400 YÊU CẦU KHÔNG TỐT | URI hoặc tiêu đề của yêu cầu không hợp lệ, hoặc tham số không chuẩn được hỗ trợ. |
401 KHÔNG ĐƯỢC uỷ quyền | Cần có sự cho phép. |
403 LẦM TIẾN | Không xác thực được thông số chuẩn, hoặc việc xác thực hay uỷ quyền không được hỗ trợ. |
404 KHÔNG TÌM THẤY | Không tìm thấy tài nguyên (chẳng hạn như nguồn cấp dữ liệu hoặc mục nhập). |
409 TRUNG BÌNH | Số phiên bản đã chỉ định không khớp với số phiên bản mới nhất của tài nguyên. |
500 LỖI MÁY CHỦ NỘI BỘ | Lỗi nội bộ. Đây là mã mặc định được sử dụng cho tất cả các lỗi không được nhận dạng. |
Tính năng đồng thời tối ưu (phiên bản)
Đôi khi, điều quan trọng là phải đảm bảo rằng nhiều khách hàng không vô tình ghi đè các thay đổi của nhau. Điều này dễ dàng đạt được nhất bằng cách đảm bảo rằng phiên bản hiện tại của mục mà khách hàng đang sửa đổi giống với phiên bản mà ứng dụng đang dựa trên sửa đổi của nó. Nếu ứng dụng thứ hai cập nhật trước ứng dụng đầu tiên thì ứng dụng đầu tiên sẽ bị từ chối vì ứng dụng đầu tiên không còn dựa trên các thay đổi trên phiên bản mới nhất nữa.
Trong các nguồn cấp dữ liệu Google hỗ trợ tạo phiên bản, chúng tôi đạt được các ngữ nghĩa này bằng cách thêm ID phiên bản vào mỗi EditURI của mỗi mục nhập. Xin lưu ý rằng chỉ URI URI bị ảnh hưởng, không phải mã mục nhập. Trong lược đồ này, mỗi bản cập nhật sẽ thay đổi EditURI của mục nhập, do đó đảm bảo rằng các lần cập nhật tiếp theo dựa trên phiên bản gốc sẽ không thành công. Tất nhiên, thao tác xóa giống hệt với các bản cập nhật liên quan đến tính năng này; nếu bạn xóa với số phiên bản cũ thì thao tác xóa không thành công.
Không phải tất cả nguồn cấp dữ liệu của Google đều hỗ trợ tính năng đồng thời lạc quan. Trong một nguồn cấp dữ liệu hỗ trợ việc này, nếu máy chủ phát hiện xung đột phiên bản trên PUT hoặc DELETE, thì máy chủ sẽ phản hồi bằng 409 Conflict
. Nội dung của phản hồi chứa trạng thái hiện tại của mục nhập (tài liệu đầu vào Atom). Bạn nên giải quyết xung đột và gửi lại yêu cầu bằng cách sử dụng EditURI từ phản hồi 409.
Động lực và ghi chú thiết kế
Phương pháp đồng thời lạc quan này cho phép chúng tôi triển khai ngữ nghĩa mà chúng tôi muốn mà không cần đánh dấu mới cho mã phiên bản. Điều này giúp phản hồi của Dữ liệu Google tương thích với các điểm cuối không phải là Google Atom.
Thay vì chỉ định ID phiên bản, chúng tôi có thể chọn xem xét dấu thời gian cập nhật trên mỗi mục nhập (/atom:entry/atom:updated
). Tuy nhiên, có hai vấn đề khi sử dụng dấu thời gian cập nhật:
- Nút này chỉ hoạt động để cập nhật và không bị xoá.
- Điều này buộc các ứng dụng sử dụng giá trị ngày/giờ làm mã phiên bản, khiến việc bổ sung Dữ liệu của Google vào nhiều kho dữ liệu hiện có trở nên khó khăn hơn.
Xác thực
Khi một khách hàng cố gắng truy cập vào một dịch vụ, dịch vụ đó có thể cần cung cấp thông tin đăng nhập của người dùng cho dịch vụ đó, để chứng minh rằng người dùng có quyền thực hiện hành động được đề cập.
Phương pháp mà một ứng dụng nên sử dụng để xác thực phụ thuộc vào loại ứng dụng:
- Một ứng dụng dành cho máy tính phải sử dụng một hệ thống xác thực dành riêng cho Google có tên là Xác thực tài khoản cho các ứng dụng đã cài đặt (còn gọi là "ClientLogin"). (Ứng dụng khách dựa trên web không được sử dụng hệ thống này.)
- Ứng dụng dựa trên nền tảng web (chẳng hạn như giao diện người dùng của bên thứ ba cho dịch vụ Google Data) nên sử dụng một hệ thống xác thực dành riêng cho Google có tên là Proxy Xác thực tài khoản cho ứng dụng dựa trên nền tảng web (còn gọi là "AuthSub").
Trong hệ thống ClientLogin, ứng dụng khách dành cho máy tính sẽ yêu cầu người dùng cung cấp thông tin đăng nhập rồi gửi những thông tin đăng nhập đó đến hệ thống xác thực của Google.
Nếu xác thực thành công, thì hệ thống xác thực sẽ trả về một mã thông báo mà ứng dụng sau đó sẽ sử dụng (trong tiêu đề Uỷ quyền HTTP) khi gửi yêu cầu Dữ liệu trên Google.
Nếu xác thực không thành công, máy chủ sẽ trả về mã trạng thái 403 Forbidden, cùng với tiêu đề WWW-Authentication chứa thử thách áp dụng cho quá trình xác thực.
Hệ thống AuthSub hoạt động tương tự như vậy, ngoại trừ việc thay vì yêu cầu người dùng cung cấp thông tin đăng nhập, hệ thống sẽ kết nối người dùng với một dịch vụ của Google yêu cầu thông tin đăng nhập. Sau đó, dịch vụ này sẽ trả về một mã thông báo mà ứng dụng web có thể sử dụng. Ưu điểm của phương pháp này là Google (thay vì giao diện người dùng web) xử lý và lưu trữ an toàn thông tin xác thực của người dùng.
Để biết thông tin chi tiết về các hệ thống xác thực này, hãy xem tài liệu Tổng quan về quá trình xác thực dữ liệu trên Google hoặc Tài khoản Google xác thực.
Trạng thái phiên
Nhiều hoạt động triển khai logic kinh doanh đòi hỏi mức độ gắn bó với phiên — theo dõi trạng thái phiên của người dùng.
Google theo dõi trạng thái phiên theo 2 cách: sử dụng cookie và sử dụng mã thông báo có thể được gửi dưới dạng tham số truy vấn. Cả hai phương pháp đều đạt được hiệu quả như nhau. Khách hàng nên hỗ trợ một trong những phương pháp theo dõi trạng thái phiên này (chỉ một trong hai phương pháp này là đủ). Nếu một ứng dụng không hỗ trợ một trong những phương thức này, thì ứng dụng đó sẽ vẫn hoạt động với Dịch vụ dữ liệu của Google, nhưng hiệu suất có thể bị ảnh hưởng so với những ứng dụng hỗ trợ các phương thức này. Cụ thể là nếu một ứng dụng không hỗ trợ các phương thức này, thì mọi yêu cầu sẽ dẫn đến một lệnh chuyển hướng, do đó mọi yêu cầu (và mọi dữ liệu liên quan) sẽ được gửi đến máy chủ hai lần, ảnh hưởng đến hiệu suất của cả ứng dụng và máy chủ.
Thư viện ứng dụng Google xử lý trạng thái phiên cho bạn, vì vậy nếu sử dụng thư viện của chúng tôi, bạn không cần làm gì để được hỗ trợ trạng thái phiên.
Tài nguyên khác
Bạn có thể thấy các tài liệu bên thứ ba sau đây hữu ích:
- So sánh giữa Atom và RSS từ dễ dàng
- Tổng quan về Atom của IBM
- Tiện ích Dublin Core sang RSS
- Định nghĩa phương thức HTTP 1.1; quy cách cho
GET
,POST
,PUT
vàDELETE
- Định nghĩa mã trạng thái HTTP 1.1
- Cách tạo giao thức REST
- Xây dựng dịch vụ web theo cách REST
- Giới thiệu về kỹ thuật XML
- Ví dụ về vùng chứa tên XML