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

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

Ứng dụng khách của bạn có thể sử dụng API Dữ liệu Blogger để tạo bài đăng mới trên blog, chỉnh sửa hoặc xoá bài đăng hiện có trên blog và truy vấn các bài đăng trên blog phù hợ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ề khả 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 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 các ứng dụng máy khách JavaScript có thể tương tác với Blogger. Công cụ này cung cấp một loạt ví dụ về các lượt 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.

Để biết thông tin tham khảo về API Dữ liệu của Blogger, hãy xem Hướng dẫn tham chiếu giao thức. Tài liệu này giả định rằng bạn đã nắm được các ý tưởng chung phía sau giao thức API dữ liệu của Google và mô hình dữ liệu cũng như luồng kiểm soát mà thư viện ứng dụng JavaScript sử dụng. Phầ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 về 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 máy khách JavaScript chạy trong một trang web trên trình duyệt. Hiện tại, các trình duyệt đượ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 nội dung giao tiếp với máy chủ của dịch vụ. Nếu là nhà phát triển JS có kinh nghiệm, bạn có thể nghĩ: "Nhưng chính sách gốc ?" Thư viện ứng dụng JavaScript cho phép ứng dụng của bạn gửi yêu cầu Google Data API 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 để tham gia thử nghiệm. Blogger sử dụng Tài khoản Google, do đó, nếu bạn đã có Tài khoản Google, thì bạn đã sẵn sàng.

Đang mua thư viện

Trước khi dùng được thư viện ứng dụng, khách hà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>

Để có được thư viện ứng dụng API dữ liệu của Google 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 của bạn. Dòng này phải được gọi 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");

Thông số thứ hai cho google.load() là số phiên bản 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 hóa theo lược đồ mà API Google Maps sử dụng. Sau đây là các số phiên bản có thể có và ý nghĩa của số đó:

"1"
Bản sửa đổi thứ hai đến cuối 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 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à "stable&&tt; dựa trê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 có số bản sửa đổi lớn và nhỏ được chỉ định.

Sau khi gọi google.load(), bạn phải yêu cầu trình tải phải đợi cho đến khi trang tải xong rồi gọi mã của bạn:

google.setOnLoadCallback(getMyBlogFeed);

Trong đó getMyBlogFeed() là 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 cách sử dụ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 muốn sửa đổi blog, 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 xác thực.

Xác thực proxy AuthSub

Xác thực proxy AuthSub được sử dụng trong các ứng dụng web cần xác thực người dùng với Tài khoản Google. Toán tử trang web và mã ứng dụng khách không có quyền truy cập vào tên người dùng và mật khẩu cho người dùng Blogger; thay vào đó, ứng dụng lấy cá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 về những gì xảy ra trong quá trình xác thực đối với một ứng dụng JavaScript dựa trên nền tảng web:

  1. Ứng dụng khách sẽ gọi phương thức google.accounts.user.login() do thư viện ứng dụng cung cấp và chuyển phương thức đó bằng "scope" giá trị cho biết dịch vụ nào của Google sẽ được sử dụng. Đối với Blogger, phạm vi là "http://www.blogger.com/feeds/".
  2. Thư viện ứng dụng khách sẽ gửi trình duyệt đến trang Google"Access", nơi người dùng có thể nhập thông tin xác thực của họ để đă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, truyền qua 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 có tên là 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 mọi 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ữ trên 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 muốn hình ảnh không 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 khu vực hiển thị. Ví dụ: style="position:absolute; top: -1000px;"

Đây là mã ứng dụng máy khách xử lý việc đăng nhập. Chúng ta sẽ gọi hàm setupMyService() từ mã khác sau này.

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 dữ liệu 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ờ 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 trang của bạn 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 đưa họ trở lại trang của bạn. Vì vậy, từ quan điểm của người dùng, họ đã cố gắng truy cập trang của bạn nhưng đã bị chuyển đi và không bao giờ được gửi 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 khi tải để giữ cho ví dụ đơn giản, nhưng chúng tôi không khuyên bạn sử dụng phương pháp này cho các ứng dụng khách thực tế.

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

Lưu ý: Khi bạn tạo một đối tượng mới trên BloggerService, thư viện ứng dụng khách sẽ gọi một phương thức có tên là google.gdata.client.init(), trình này sẽ kiểm tra xem trình duyệt mà ứng dụng khách đang chạy có được hỗ trợ hay không. Nếu xảy ra 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 google.gdata.client.init(handleInitError) một cách rõ ràng trước khi tạo dịch vụ, trong đó handleInitError() là hàm của bạn. Nếu một lỗi khởi đầu xảy ra, hàm của bạn sẽ nhận được một đối tượng Lỗi chuẩn; bạn có thể làm bất kỳ điều gì bạn muốn với đối tượng đó.

Mã thông báo này 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 này được giữ lại trong các phiên hoạt động của trình duyệt, nên người dùng có thể đóng trình duyệt rồi mở lại và quay lại ứng dụng khách của mình mà họ 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 hoạt động. Nếu Blogger từ chối mã thông báo, ứng dụng của bạn sẽ xử lý điều kiện 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() để mua được 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 trong 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 quá trình 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ề quản lý mã thông báo và trên checkLogin()getInfo(), hãy xem tài liệu Sử dụng "AuthSub" Xác thực bằng Thư viện ứng dụng JavaScript.

Quay lại đầu trang