Hướng dẫn dành cho nhà phát triển: JavaScript

Blogger Data API cho phép các ứng dụng khách xem và cập nhật Blogger nội dung dưới dạng nguồn cấp dữ liệu Google Data API.

Ứ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ề những khả năng của Blogger Data API. Tài liệu này đưa ra ví dụ về các hoạt động tương tác cơ bản với Data API 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 của hướng dẫn của 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 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 phần 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 API Dữ liệu của Google giao thức và mô hình dữ liệu cũng như luồng điều khiển mà ứng dụng JavaScript sử dụng thư viện. 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.

Để tham khảo thông tin về các lớp và phương thức do thư viện ứng dụng, hãy xem API thư viện ứng dụng JavaScript tham khảo.

Tài liệu này được thiết kế để đọc theo thứ tự; mỗi ví dụ đều dựa trên các ví dụ trước đó.

Điều khoản sử dụng

Bạn đồng ý tuân thủ Google JavaScript Điều khoản sử dụng của Thư viện ứng dụng 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 Google Data API yêu cầu từ bất kỳ miền nào trong khi vẫn tuân thủ mô hình bảo mật của trình duyệt.

Bắt đầu

Trước khi có thể viết ứng dụng khách JavaScript, bạn cần thực hiện một số thiết lập để có được thư viện.

Tạo tài khoản Blogger

Bạn nên đăng ký Tài khoản Blogger để thử nghiệm. Blogger sử dụng Tài khoản Google, vì vậy nếu bạn khi đã có Tài khoản Google, thế là bạn đã hoàn tất.

Mua 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> trong tài liệu HTML của bạn để tìm nạp AJAX của Google Trình tải API:

<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 đối với google.load() là phiên bản được yêu cầu số lượng 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 mô hình 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 lớn 1.
"1.s"
Bản sửa đổi ổn định mới nhất của phiên bản lớn 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 đến dịch vụ Blogger

Bạn có thể truy cập cả nguồn cấp dữ liệu công khai và riêng tư bằng API Dữ liệu của Blogger. Nguồn cấp dữ liệu công khai không yêu cầu xác thực nào nhưng sẽ ở chế độ chỉ đọc. Nếu bạn muốn sửa đổi blog, thì khách hà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

Xác thực proxy AuthSub được sử dụng bởi các ứng dụng web cần xác thực người dùng với Tài khoản Google. Đơn vị điều hành trang web và khách hà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 nhận được mã thông báo AuthSub đặc biệt cho phép ứng dụng hành độ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:

  1. Ứng dụng khách gọi google.accounts.user.login() phương thức do thư viện ứng dụng cung cấp, truyền vào đó một "phạm vi" giá trị cho biết cần sử dụng dịch vụ nào của Google. Đối với Blogger, phạm vi áp dụng là "http://www.blogger.com/feeds/".
  2. Thư viện ứng dụng gửi trình duyệt đến trang "Quyền truy cập" Yêu cầu" , nơi người dùng có thể nhập thông tin xác thực của mình để đăng nhập vào dịch vụ.
  3. 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.
  4. 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().
  5. 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 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 một 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 cần chờ tương tác của người dùng, sau đó điều đầu tiên người dùng nhìn thấy khi truy cập trang của bạn là một trang đăng nhập 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à khó chịu cho người dùng. Trong mã ví dụ trong tài liệu này, chúng tôi sẽ gọi google.accounts.user.login() ngay sau đó để đơn giản hoá ví dụ, nhưng bạn không nên dùng phương pháp này cho ứng dụng khách trong thế giới thực.

Lưu ý rằng bạn không phải làm gì với biến có tên token; thư viện ứng dụng theo dõi mã thông báo, nên bạn sẽ không phải.

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 bạn muốn xử lý loại lỗi này thì bạn có thể gọi một cách 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 có lỗi khởi tạo xảy ra thì hàm của bạn sẽ nhận được đối tượng Lỗi chuẩn; bạn có thể làm gì cũng được mong muốn với đối tượng đó.

Mã thông báo vẫn hợp lệ 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, thì ứng dụng của bạn phải 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 pháp 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 nhất định 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 thông tin về việc quản lý mã thông báo, cũng như về checkLogin()getInfo(), hãy xem phần Sử dụng "AuthSub" Xác thực bằng Thư viện ứng dụng JavaScript tài liệu.

Trở lại đầu trang