API Dữ liệu Blogger cho phép các ứng dụng khách xem và cập nhật nội dung Blogger dưới dạng nguồn cấp dữ liệu API Google Data.
Ứng dụng khách của bạn có thể sử dụng API Dữ liệu Blogger để tạo bài đăng trên blog mới, chỉnh sửa hoặc xoá bài đăng trên blog hiện có và truy vấn các bài đăng trên blog khớp với tiêu chí cụ thể.
Ngoài việc cung cấp một số thông tin cơ bản về các tính năng của API Dữ liệu Blogger, tài liệu này còn cung cấp các ví dụ về các hoạt động tương tác cơ bản với API Dữ liệu bằng cách sử dụng thư viện ứng dụng JavaScript. Nếu bạn muốn tìm hiểu thêm về giao thức cơ bản mà thư viện sử dụng, hãy xem phần Giao thức trong hướng dẫn dành cho nhà phát triển này.
Nội dung
Đối tượng
Tài liệu này dành cho các lập trình viên muốn viết ứng dụng khách JavaScript có thể tương tác với Blogger. Tài liệu này cung cấp một loạt ví dụ về các hoạt động tương tác cơ bản với Data API bằng cách sử dụng thư viện ứng dụng JavaScript.
Để biết thông tin tham khảo về Blogger Data API, hãy xem Hướng dẫn tham khảo về giao thức. Tài liệu này giả định rằng bạn hiểu các ý tưởng chung đằng sau giao thức API Dữ liệu của Google cũng như mô hình dữ liệu và luồng kiểm soát mà thư viện ứng dụng JavaScript sử dụng. Hướng dẫn này cũng giả định rằng bạn biết cách lập trình bằng JavaScript.
Để biết thông tin tham khảo về các lớp và phương thức do thư viện ứng dụng cung cấp, hãy xem tài liệu tham khảo API thư viện ứng dụng JavaScript.
Tài liệu này được thiết kế để đọc theo thứ tự; mỗi ví dụ được xây dựng dựa trên các ví dụ trước đó.
Điều khoản sử dụng
Bạn đồng ý tuân thủ Điều khoản sử dụng thư viện ứng dụng JavaScript của Google khi sử dụng thư viện ứng dụng JavaScript.
Giới thiệu về các môi trường được hỗ trợ
Hiện tại, chúng tôi chỉ hỗ trợ các ứng dụng khách JavaScript chạy trong một trang web trong trình duyệt. Các trình duyệt hiện được hỗ trợ là Firefox 1.5 trở lên và Internet Explorer 6.0 trở lên.
Thư viện ứng dụng JavaScript xử lý mọi hoạt động giao tiếp với máy chủ của dịch vụ. Nếu là một nhà phát triển JS giàu kinh nghiệm, bạn có thể đang nghĩ: "Nhưng còn chính sách về cùng một nguồn gốc thì sao?" Thư viện ứng dụng JavaScript cho phép ứng dụng của bạn gửi yêu cầu API Dữ liệu của Google từ bất kỳ miền nào trong khi vẫn tuân thủ mô hình bảo mật trình duyệt.
Bắt đầu
Trước khi có thể viết ứng dụng khách JavaScript, bạn cần thiết lập một số nội dung để có được thư viện.
Tạo tài khoản Blogger
Bạn nên đăng ký một tài khoản Blogger để thử nghiệm. Blogger sử dụng Tài khoản Google, vì vậy, nếu bạn đã có Tài khoản Google, thì bạn đã sẵn sàng.
Tải thư viện
Trước khi có thể sử dụng thư viện ứng dụng, ứng dụng phải yêu cầu mã thư viện ứng dụng từ máy chủ.
Bắt đầu bằng cách sử dụng thẻ <script>
trong phần <head>
của tài liệu HTML để tìm nạp trình tải API AJAX của Google:
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
Để lấy thư viện ứng dụng Google Data API sau khi tìm nạp trình tải, hãy sử dụng dòng sau trong mã thiết lập JavaScript. Bạn phải gọi dòng này từ phần <head>
của tài liệu HTML (hoặc từ tệp JavaScript được đưa vào bằng thẻ <script>
trong phần <head>
của tài liệu HTML):
google.load("gdata", "1.x");
Tham số thứ hai cho google.load()
là số phiên bản được yêu cầu của thư viện ứng dụng JavaScript. Lược đồ đánh số phiên bản của chúng tôi được mô hình hoá theo lược đồ mà API Google Maps sử dụng. Dưới đây là các số phiên bản có thể có và ý nghĩa của các số phiên bản đó:
"1"
- Bản sửa đổi gần đây nhất của phiên bản chính 1.
"1.x"
- Bản sửa đổi mới nhất của phiên bản chính 1.
"1.s"
- Bản sửa đổi ổn định mới nhất của phiên bản chính 1. Đôi khi, chúng tôi sẽ khai báo một phiên bản nhất định của thư viện ứng dụng là "ổn định" dựa trên ý kiến phản hồi mà chúng tôi nhận được từ các nhà phát triển. Tuy nhiên, phiên bản đó có thể không có các tính năng mới nhất.
"1.0"
,"1.1
", v.v.- Một phiên bản cụ thể của thư viện, với số bản sửa đổi chính và phụ được chỉ định.
Sau khi gọi google.load()
, bạn phải yêu cầu trình tải đợi cho đến khi trang tải xong rồi gọi mã của bạn:
google.setOnLoadCallback(getMyBlogFeed);
Trong đó, getMyBlogFeed()
là một hàm mà chúng ta sẽ xác định trong phần sau của tài liệu này. Hãy sử dụng phương pháp này thay vì đính kèm trình xử lý onload
vào phần tử <body>
.
Xác thực với dịch vụ Blogger
Bạn có thể truy cập vào cả nguồn cấp dữ liệu công khai và riêng tư bằng Blogger Data API. Nguồn cấp dữ liệu công khai không yêu cầu xác thực, nhưng chỉ có thể đọc. Nếu bạn muốn chỉnh sửa blog, thì ứng dụng của bạn cần xác thực trước khi yêu cầu nguồn cấp dữ liệu riêng tư.
Thư viện ứng dụng JavaScript sử dụng hệ thống xác thực AuthSub. Để biết thêm thông tin về việc xác thực bằng API Dữ liệu của Google nói chung, hãy xem tài liệu về xác thực.
Xác thực proxy AuthSub
Phương thức xác thực proxy AuthSub được các ứng dụng web sử dụng khi cần xác thực người dùng với Tài khoản Google. Nhà điều hành trang web và mã ứng dụng không có quyền truy cập vào tên người dùng và mật khẩu của người dùng Blogger; thay vào đó, ứng dụng sẽ nhận được mã thông báo AuthSub đặc biệt cho phép ứng dụng thay mặt cho một người dùng cụ thể.
Dưới đây là thông tin tổng quan ngắn gọn về những gì xảy ra trong quá trình xác thực cho ứng dụng JavaScript dựa trên web:
- Ứng dụng khách gọi phương thức
google.accounts.user.login()
do thư viện ứng dụng cung cấp, truyền cho phương thức này một giá trị "phạm vi" cho biết dịch vụ Google nào sẽ sử dụng. Đối với Blogger, phạm vi là"http://www.blogger.com/feeds/"
. - Thư viện ứng dụng sẽ gửi trình duyệt đến trang "Yêu cầu truy cập" của Google, nơi người dùng có thể nhập thông tin xác thực để đăng nhập vào dịch vụ.
- Nếu người dùng đăng nhập thành công, thì hệ thống AuthSub sẽ gửi trình duyệt trở lại URL của ứng dụng web, chuyển mã thông báo xác thực.
- Thư viện ứng dụng JavaScript lưu trữ mã thông báo trong một cookie và trả về quyền kiểm soát cho hàm của ứng dụng khách đã gọi
google.accounts.user.login()
. - Sau đó, khi ứng dụng khách gọi các phương thức thư viện ứng dụng tương tác với Blogger, thư viện ứng dụng sẽ tự động đính kèm mã thông báo vào tất cả các yêu cầu.
Lưu ý: Để thư viện ứng dụng JavaScript thực hiện các yêu cầu đã xác thực của Blogger trong trình duyệt web, trang của bạn phải chứa một hình ảnh được lưu trữ tại cùng một miền với trang của bạn. Đó có thể là bất kỳ hình ảnh nào, thậm chí là hình ảnh trong suốt có một pixel, nhưng phải có hình ảnh trên trang. Nếu không muốn hình ảnh xuất hiện trên trang, bạn có thể sử dụng thuộc tính style
của thẻ <img>
để đặt hình ảnh bên ngoài vùng kết xuất. Ví dụ: style="position:absolute; top:
-1000px;"
Dưới đây là mã ứng dụng khách xử lý việc đăng nhập. Chúng ta sẽ gọi hàm setupMyService()
từ mã khác sau.
function logMeIn() {
scope = "http://www.blogger.com/feeds/
";
var token = google.accounts.user.login(scope);
}
function setupMyService() {
var myService =
new google.gdata.blogger.BloggerService('exampleCo-exampleApp-1');
logMeIn();
return myService;
}
Mẹo: Bạn nên cung cấp nút đăng nhập hoặc cơ chế nhập khác của người dùng để nhắc người dùng bắt đầu quy trình đăng nhập theo cách thủ công. Thay vào đó, nếu bạn gọi google.accounts.user.login()
ngay sau khi tải mà không chờ người dùng tương tác, thì điều đầu tiên người dùng nhìn thấy khi truy cập vào trang của bạn sẽ là trang đăng nhập của Google. Nếu người dùng quyết định không đăng nhập, thì Google sẽ không chuyển hướng họ quay lại trang của bạn. Vì vậy, theo quan điểm của người dùng, họ đã cố gắng truy cập vào trang của bạn nhưng bị chuyển hướng đi nơi khác và không bao giờ được chuyển hướng quay lại. Tình huống này có thể gây nhầm lẫn và bực bội cho người dùng. Trong mã ví dụ trong tài liệu này, chúng ta sẽ gọi google.accounts.user.login()
ngay sau khi tải để giữ cho ví dụ đơn giản, nhưng bạn không nên sử dụng phương pháp này cho các ứng dụng khách thực tế.
Xin lưu ý rằng bạn không cần làm gì với biến có tên token
; thư viện ứng dụng sẽ theo dõi mã thông báo, vì vậy bạn không cần làm gì cả.
Lưu ý: Khi bạn tạo một đối tượng BloggerService mới, thư viện ứng dụng sẽ gọi một phương thức có tên google.gdata.client.init()
. Phương thức này sẽ kiểm tra để đảm bảo trình duyệt mà ứng dụng đang chạy được hỗ trợ. Nếu có lỗi, thư viện ứng dụng sẽ hiển thị thông báo lỗi cho người dùng. Nếu muốn tự xử lý loại lỗi này, bạn có thể gọi rõ ràng google.gdata.client.init(handleInitError)
trước khi tạo dịch vụ, trong đó handleInitError()
là hàm của bạn. Nếu xảy ra lỗi khởi tạo, hàm của bạn sẽ nhận được một đối tượng Lỗi tiêu chuẩn; bạn có thể làm bất cứ điều gì bạn muốn với đối tượng đó.
Mã thông báo này vẫn có hiệu lực cho đến khi bạn thu hồi bằng cách gọi google.accounts.user.logout()
:
function logMeOut() { google.accounts.user.logout(); }
Nếu bạn không gọi logout()
, thì cookie lưu trữ mã thông báo sẽ tồn tại trong hai năm, trừ phi người dùng xoá cookie đó. Cookie được giữ lại trong các phiên trình duyệt, vì vậy, người dùng có thể đóng trình duyệt rồi mở lại và quay lại ứng dụng của bạn mà vẫn đăng nhập.
Tuy nhiên, có một số trường hợp bất thường mà mã thông báo có thể trở nên không hợp lệ trong một phiên. Nếu Blogger từ chối một mã thông báo, ứng dụng của bạn sẽ xử lý tình trạng lỗi bằng cách gọi logout()
để xoá cookie chứa mã thông báo hiện tại, sau đó gọi lại login()
để lấy mã thông báo mới, hợp lệ.
Có hai phương thức AuthSub khác mà bạn có thể thấy hữu ích trong nhiều ngữ cảnh:
google.accounts.user.checkLogin(scope)
cho bạn biết liệu trình duyệt hiện có mã thông báo xác thực cho phạm vi đã cho hay không.google.accounts.user.getInfo()
cung cấp thông tin chi tiết về mã thông báo hiện tại, để sử dụng cho mục đích gỡ lỗi.
Để biết thông tin chi tiết về cách sử dụng JavaScript để tương tác với AuthSub, bao gồm cả thông tin về việc quản lý mã thông báo và về checkLogin()
và getInfo()
, hãy xem tài liệu Sử dụng tính năng xác thực "AuthSub" bằng Thư viện ứng dụng JavaScript.