Câu hỏi thường gặp

    Tổng quan

  1. Google Data API là gì?
  2. Tôi có yêu cầu về tính năng hoặc báo cáo lỗi. Tôi nên đăng ở đâu?
  3. Tôi nên đặt câu hỏi về một API cụ thể ở đâu?
  4. JSON là gì?
  5. Tôi có phải sử dụng XML không? Có định dạng dữ liệu nào khác không?
  6. Tại sao bạn lại sử dụng REST?
  7. Bạn có mẹo hay mã mẫu ngắn nào cho các vấn đề thường gặp không?
  8. Gmail có Data API không?
  9. Xác thực

  10. Tên dịch vụ trong ClientLogin cho mỗi Data API là gì?
  11. Khi người dùng đăng xuất khỏi một ứng dụng, có cần thiết phải thông báo cho các máy chủ API không?
  12. Mã thông báo xác thực ClientLogin có ngày hết hạn không?
  13. Tôi có một câu hỏi chung về Tài khoản Google. Tôi nên đi đâu?
  14. Làm cách nào để xác thực với một API?
  15. Tôi nên sử dụng giá trị nào cho tham số phạm vi AuthSub/OAuth 1?
  16. Có nhiều loại mã thông báo AuthSub không? Mã thông báo có hết hạn không?
  17. Điểm khác biệt chính giữa ClientLogin và AuthSub/OAuth 1 là gì?
  18. Tôi có thể sử dụng phương thức xác thực ClientLogin trong các ứng dụng web bên thứ ba không?
  19. CAPTCHA là gì?
  20. Làm cách nào để tạo một thử thách CAPTCHA?
  21. Tôi có nên sử dụng ClientLogin trong ứng dụng web của mình không?
  22. Làm cách nào để biết tên người dùng khi sử dụng AuthSub/OAuth 1?
  23. Làm cách nào để sử dụng OAuth 1 với thư viện ứng dụng Google Data API?
  24. Làm cách nào để sử dụng AuthSub với các thư viện ứng dụng Google Data API?
  25. Làm cách nào để sử dụng ClientLogin với thư viện ứng dụng Google Data API?
  26. Thư viện ứng dụng

  27. Google hỗ trợ những ngôn ngữ lập trình nào có thư viện ứng dụng?
  28. Làm cách nào để báo cáo lỗi hoặc yêu cầu tính năng cho một trong các thư viện ứng dụng Google Data?
  29. Làm cách nào để bật các lựa chọn gỡ lỗi trong thư viện ứng dụng?
  30. Tôi có thể tìm thấy tài liệu tham khảo cho các lớp thư viện ứng dụng ở đâu?
  31. Khắc phục sự cố

  32. Đâu là một số công cụ hữu ích để gỡ lỗi HTTP?
  33. Làm cách nào để lấy thông tin ghi nhật ký HTTP trong thư viện ứng dụng Java?
  34. Làm cách nào để lấy thông tin ghi nhật ký HTTP trong thư viện ứng dụng .NET?
  35. Làm cách nào để bật tính năng mã hoá gzip trong nguồn cấp dữ liệu của Google?
  36. Tại sao tôi thấy lỗi "Không thể kết nối với sslv2" khi sử dụng ứng dụng PHP?
  37. Làm cách nào để lấy tài liệu dịch vụ Atom mô tả một nguồn cấp dữ liệu?

Tổng quan

Google Data API là gì?

Google Data API là một API dựa trên giao thức Google Data. Giao thức Dữ liệu của Google dựa trên các định dạng phân phối Atom 1.0RSS 2.0, cộng với Giao thức xuất bản Atom (APP).

Giao thức Dữ liệu của Google mở rộng các tiêu chuẩn đó theo nhiều cách, bằng cách sử dụng các cơ chế mở rộng được tích hợp trong các tiêu chuẩn. Nguồn cấp dữ liệu tuân theo định dạng phân phối Atom hoặc RSS. Mô hình xuất bản tuân thủ Giao thức xuất bản Atom.

Giao thức này cũng cung cấp một mô hình chung cho nguồn cấp dữ liệu, truy vấn và kết quả. Bạn có thể dùng công cụ này để gửi các truy vấn và nội dung cập nhật đến mọi Data API.

Tôi có yêu cầu về tính năng hoặc báo cáo lỗi. Tôi nên đăng ở đâu?
Hãy xem công cụ theo dõi vấn đề của chúng tôi. Tìm yêu cầu về tính năng của bạn rồi gắn dấu sao để thể hiện sự ủng hộ và nhận thông tin cập nhật về trạng thái của yêu cầu đó.
Tôi nên đặt câu hỏi về một API cụ thể ở đâu?
Nếu vấn đề của bạn không có trong danh sách này hoặc bạn muốn biết thêm thông tin, thì có các nhóm thảo luận dành riêng cho từng API Dữ liệu của Google:
JSON là gì?

JSON là viết tắt của JavaScript Object Notation (Ký hiệu đối tượng JavaScript).

JSON là một định dạng trao đổi dữ liệu gọn nhẹ và đơn giản nên được các nhà phát triển web sử dụng rộng rãi. Bạn có thể dễ dàng đọc và viết; bạn có thể phân tích cú pháp bằng bất kỳ ngôn ngữ lập trình nào và các cấu trúc của nó sẽ ánh xạ trực tiếp đến các cấu trúc dữ liệu được dùng trong hầu hết các ngôn ngữ lập trình.

Đọc thêm về Cách sử dụng JSON với Google Data API.

Tôi có phải sử dụng XML không? Có định dạng dữ liệu nào khác không?
Định dạng dữ liệu mặc định cho Google Data API là XML, dưới dạng nguồn cấp dữ liệu Atom. Tuy nhiên, khi yêu cầu một nguồn cấp dữ liệu, bạn có thể chỉ định một định dạng thay thế bằng cách sử dụng tham số truy vấn alt.
  • alt=rss
    Dữ liệu phản hồi được định dạng dưới dạng nguồn cấp dữ liệu RSS.
  • alt=json hoặc alt=json-in-script
    Trả về một biểu thị JSON của cấu trúc XML trong nguồn cấp dữ liệu Atom. Lợi ích bổ sung của JSON là dễ dàng "phân tích cú pháp" trong mã ứng dụng JavaScript. Hiện tại, việc sử dụng JSON chỉ có thể ở chế độ chỉ đọc. Tuy nhiên, việc sử dụng thư viện ứng dụng JavaScript với các dịch vụ Blogger, Danh bạ hoặc Lịch cho phép cả đọc và ghi dữ liệu.

    Đọc thêm về Cách yêu cầu và sử dụng nguồn cấp dữ liệu JSON.

  • alt=atom-in-script
    Tương tự như alt=json-in-script, nhưng kết quả được trả về dưới dạng một chuỗi Atom XML thay vì JSON.
  • alt=rss-in-script
    Tương tự như alt=atom-in-script, nhưng kết quả được trả về dưới dạng một chuỗi XML RSS thay vì Atom.

Tìm hiểu thêm về các định dạng thay thế trong Hướng dẫn tham khảo dữ liệu của Google.

Tại sao bạn lại sử dụng REST?
REST đơn giản, gọn nhẹ, có khả năng mở rộng và ánh xạ rất tốt để biểu thị và hiển thị dữ liệu.
Bạn có mẹo hay mã mẫu ngắn nào cho các vấn đề thường gặp không?
Bạn nên duyệt xem Blog về mẹo sử dụng API Google Data để được trợ giúp về cả thư viện ứng dụng và cách đưa ra yêu cầu thô.
Gmail có Data API không?

Không, nhưng bạn có thể sử dụng Nguồn cấp dữ liệu Atom của Gmail với AuthSub hoặc OAuth 1 để yêu cầu quyền truy cập chỉ đọc vào thư chưa đọc của người dùng. Bạn phải đặt phạm vi thành https://mail.google.com/mail/feed/atom/. Sau đây là một cụm từ tìm kiếm mẫu:

GET https://mail.google.com/mail/feed/atom/

Nếu bạn muốn quản lý thư, Gmail cũng hỗ trợ IMAP/POP.


Xác thực

Trong tài liệu về Google Data API, "OAuth" đề cập đến OAuth 1; để biết thông tin chi tiết về OAuth 2.0, hãy xem tài liệu cho từng API.

Tên dịch vụ trong ClientLogin cho từng Data API là gì?
"Tên dịch vụ" là một chuỗi ngắn mà hệ thống xác thực ClientLogin sử dụng để xác định một dịch vụ của Google.
Google API Tên dịch vụ
API Dữ liệu của Google Analytics analytics
API G Suite
(Thông tin và hoạt động quản lý miền)
apps
Google Sites Data API jotspot
Blogger Data API blogger
Book Search Data API print
Calendar Data API cl
Google Code Search Data API codesearch
Contacts Data API cp
Content API for Shopping structuredcontent
Documents List Data API writely
Finance Data API finance
Nguồn cấp dữ liệu Atom của Gmail mail
Health Data API health
weaver (Hộp cát H9)
Maps Data APIs local
Picasa Web Albums Data API lh2
Sidewiki Data API annotateweb
Spreadsheets Data API wise
Webmaster Tools API sitemaps
API Dữ liệu YouTube youtube

Để biết thêm thông tin về các thông số khác được dùng trong yêu cầu ClientLogin, hãy xem tài liệu ClientLogin.

Khi người dùng đăng xuất khỏi một ứng dụng, có cần thiết phải thông báo cho các máy chủ API không?
Không, bạn không cần thông báo cho Google Data API khi người dùng đăng xuất khỏi một ứng dụng. Tuy nhiên, nếu không cần sử dụng mã thông báo AuthSub đã phát hành nữa, thì ứng dụng của bạn nên thu hồi mã thông báo.
Mã thông báo xác thực ClientLogin có ngày hết hạn không?
Mã thông báo ClientLogin có thể tồn tại trong 2 tuần kể từ ngày phát hành, nhưng giới hạn này là dành riêng cho từng dịch vụ và có thể ngắn hơn.
Tôi có một câu hỏi chung về Tài khoản Google. Tôi nên đi đâu?
Truy cập vào Trung tâm trợ giúp của Tài khoản Google.
Làm cách nào để xác thực với một API?
Yêu cầu HTTP của bạn phải có một tiêu đề Uỷ quyền chứa mã thông báo nhận được bằng cách sử dụng ClientLogin, AuthSub hoặc OAuth 1.
Tôi nên sử dụng giá trị nào cho tham số phạm vi AuthSub/OAuth 1?
AuthSub và OAuth 1 yêu cầu tham số scope để xác định(các) dịch vụ của Google mà ứng dụng của bạn sẽ có quyền truy cập. Để biết thông tin chi tiết về OAuth 2.0, hãy xem tài liệu về API cụ thể của bạn.

Google API Tên dịch vụ ClientLogin
API Dữ liệu của Google Analytics https://www.google.com/analytics/feeds/
Google Sites Data API http(s)://sites.google.com/feeds/
Blogger Data API http://www.blogger.com/feeds/
Book Search Data API http://www.google.com/books/feeds/
Calendar Data API http(s)://www.google.com/calendar/feeds/
Contacts Data API http(s)://www.google.com/m8/feeds/
Content API for Shopping https://www.googleapis.com/auth/structuredcontent
Documents List Data API http(s)://docs.google.com/feeds/
Finance Data API http://finance.google.com/finance/feeds/
Nguồn cấp dữ liệu Atom của Gmail https://mail.google.com/mail/feed/atom/
Health Data API https://www.google.com/health/feeds/
https://www.google.com/h9/feeds/ (Hộp cát H9)
Maps Data API http://maps.google.com/maps/feeds/
Picasa Web Albums Data API http://picasaweb.google.com/data/
Portable Contacts API http://www-opensocial.googleusercontent.com/api/people
Sidewiki Data API http://www.google.com/sidewiki/feeds/
Spreadsheets Data API http(s)://spreadsheets.google.com/feeds/
Webmaster Tools API http://www.google.com/webmasters/tools/feeds/
API Dữ liệu YouTube http://gdata.youtube.com
Có nhiều loại mã thông báo AuthSub không? Mã thông báo có hết hạn không?
Có hai loại mã thông báo AuthSub. Thứ nhất là mã thông báo dùng một lần được trình bày cho ứng dụng web của bạn thông qua tham số truy vấn "token". Mã thông báo này sẽ hết hạn vào lần đầu tiên được dùng với dịch vụ mà mã thông báo được cấp hoặc khi mã thông báo được trao đổi để lấy mã thông báo phiên.

Mã thông báo phiên sẽ không hết hạn, trừ phi mã thông báo đó bị thu hồi một cách rõ ràng thông qua người dùng hoặc lệnh gọi API AuthSubRevokeToken. Bạn chỉ có thể trao đổi mã thông báo sử dụng một lần để lấy mã thông báo phiên nếu URL AuthSubRequest ban đầu chỉ định session=1 làm tham số truy vấn.
Điểm khác biệt chính giữa ClientLogin và AuthSub/OAuth 1 là gì?

AuthSub được thiết kế cho các ứng dụng web. Tính năng này đảm bảo rằng thông tin đăng nhập của người dùng được gửi trực tiếp từ trình duyệt web của người dùng đến các máy chủ của Google một cách an toàn thay vì thông qua một trang web của bên thứ ba.

ClientLogin dành cho các ứng dụng đã cài đặt trên máy tính. Phương thức này yêu cầu ứng dụng yêu cầu truyền thông tin đăng nhập của người dùng đến Google thay mặt cho người dùng.

Xem tài liệu về Google Account Authentication API.

Tôi có thể sử dụng phương thức xác thực ClientLogin trong các ứng dụng web của bên thứ ba không?
Bạn có thể sử dụng ClientLogin trong các ứng dụng web của bên thứ ba, nhưng chúng tôi không khuyến khích bạn làm như vậy. Tốt nhất là ứng dụng web không bao giờ được yêu cầu người dùng cung cấp thông tin đăng nhập (điều này có thể khiến người dùng dễ bị theo dõi). Thay vào đó, một ứng dụng nên lưu trữ thông tin đăng nhập của người dùng ở phía máy chủ và có một "tài khoản dịch vụ" duy nhất luôn được dùng để xác thực với Google.
CAPTCHA là gì?
CAPTCHA (Phép thử Turing công khai hoàn toàn tự động để phân biệt máy tính với con người) là một loại phép thử phản hồi thách thức được dùng để xác định xem người dùng có phải là con người hay không. Đại học Carnegie Mellon đã đăng ký nhãn hiệu cho thuật ngữ này. Xem thêm thông tin trên Wikipedia. Chúng tôi đã triển khai CAPTCHA trong ClientLogin.
Làm cách nào để tạo một thử thách CAPTCHA?
Một thuật toán độc quyền được dùng để xác định thời điểm cần có thử thách CAPTCHA trong quá trình xác thực. Nhiều lần xác thực bằng thông tin đăng nhập không hợp lệ thường sẽ tạo ra một thử thách CAPTCHA.
Tôi có nên sử dụng ClientLogin trong ứng dụng web của mình không?
Không, các ứng dụng đã cài đặt trên phần cứng thuộc sở hữu của người dùng nên sử dụng ClientLogin. Việc sử dụng ClientLogin API trong các ứng dụng web là không an toàn và chúng tôi không khuyến khích bạn sử dụng.
Làm cách nào để biết tên người dùng khi sử dụng AuthSub/OAuth 1?
Vì bạn chỉ được Google cấp một mã thông báo cấp quyền truy cập vào nguồn cấp dữ liệu của người dùng, nên bạn có thể không biết tên người dùng của họ. Điều này có thể gây ra vấn đề nếu URL nguồn cấp dữ liệu mà bạn muốn sử dụng có chứa tên người dùng. Trong trường hợp này, bạn có thể sử dụng tên người dùng đặc biệt default có nghĩa là "người dùng mà tôi đang sử dụng mã thông báo xác thực của họ".
Làm cách nào để sử dụng OAuth 1 với thư viện ứng dụng Google Data API?
Xem bài viết Sử dụng OAuth 1 với Thư viện ứng dụng Google Data API.
Làm cách nào để sử dụng AuthSub với thư viện ứng dụng Google Data API?
Xem bài viết Sử dụng AuthSub với Thư viện ứng dụng Google Data API.
Làm cách nào để sử dụng ClientLogin với thư viện ứng dụng Google Data API?
Xem bài viết Sử dụng ClientLogin với Thư viện ứng dụng Google Data API.

Thư viện ứng dụng

Google hỗ trợ thư viện ứng dụng cho những ngôn ngữ lập trình nào?

Google chính thức hỗ trợ các thư viện ứng dụng Java, .NET, PythonObjective-C. Ngoài ra, đối tác Zend của chúng tôi đã viết một thư viện ứng dụng PHP. Khi sử dụng các thư viện này, bạn có thể tạo các yêu cầu giao thức Dữ liệu của Google, gửi các yêu cầu đó đến một dịch vụ và xử lý các phản hồi của máy chủ. Ngoài ra, còn có một thư viện ứng dụng JavaScript hiện chỉ hỗ trợ Blogger, Lịch và Danh bạ Google.

Nếu bạn viết một thư viện ứng dụng bằng ngôn ngữ khác ngoài Java, .Net, Python hoặc Objective-C và muốn chia sẻ với cộng đồng nhà phát triển Data API, hãy đăng trong nhóm thảo luận về Data API của Google. Chúng tôi rất muốn nghe ý kiến của bạn!

Làm cách nào để báo cáo lỗi hoặc yêu cầu tính năng cho một trong các thư viện ứng dụng?

Bạn có thể báo cáo lỗi hoặc yêu cầu về tính năng cho thư viện ứng dụng tại các vị trí sau:

Sau khi đăng lỗi, hãy tạo một chuỗi trong diễn đàn dành cho nhà phát triển cho API thích hợp.

Làm cách nào để bật các lựa chọn gỡ lỗi trong thư viện ứng dụng Google Data API?
Vui lòng xem bài viết sau đây để biết thông tin về cách bật tính năng gỡ lỗi bằng một số thư viện ứng dụng: Gỡ lỗi ứng dụng Google Data API: Khám phá lưu lượng truy cập trong chương trình của bạn
Tôi có thể tìm tài liệu tham khảo cho các lớp thư viện ứng dụng ở đâu?
Thư viện ứng dụng Hướng dẫn tham chiếu
Java Javadoc
JavaScript JSdoc
.NET NDoc
PHP phpDoc
Python PyDoc

Khắc phục sự cố

Đâu là một số công cụ hữu ích để gỡ lỗi HTTP?

Có một số công cụ được liệt kê bên dưới, nhưng bạn cũng có thể đọc bài viết On the Wire: Network Capture Tools for API Developers (Trên mạng: Công cụ ghi lại mạng dành cho nhà phát triển API). Bài viết này mô tả chi tiết các ví dụ về cả WireShark và Fiddler.

Wireshark
Wireshark là một "trình phân tích giao thức mạng". Công cụ này có khả năng ghi lại lưu lượng truy cập mạng và phân tích nội dung. Công cụ này rất hữu ích trong việc gỡ lỗi lưu lượng truy cập xảy ra trong các thư viện mà bạn không có quyền truy cập trực tiếp vào các luồng yêu cầu và phản hồi HTTP. Không thể phân tích lưu lượng truy cập giữa ứng dụng của bạn và các dịch vụ xác thực bằng Wireshark vì thông tin liên lạc được mã hoá bằng SSL. Bạn cũng có thể dùng Wireshark để phân tích lưu lượng truy cập được thu thập bằng các công cụ như tcpdump. Wireshark có sẵn dưới dạng cả mã nguồn và trình cài đặt Windows của nhà phát triển. Các gói của bên thứ ba có sẵn cho nhiều nền tảng.
Fiddler
Fiddler là một "proxy gỡ lỗi HTTP". Nếu bạn có thể định cấu hình mã hoặc môi trường thời gian chạy để sử dụng máy chủ proxy cho lưu lượng truy cập HTTP, thì Fiddler sẽ nằm giữa ứng dụng và Dịch vụ dữ liệu của Google, cho phép bạn kiểm tra lưu lượng truy cập. Fiddler 2 có hỗ trợ SSL. Fiddler hiện chỉ có trên Windows.
cURL
cURL là một công cụ dòng lệnh có thể thực hiện các yêu cầu HTTP/HTTPS. Đây là một lựa chọn rất hữu ích để kiểm thử nhanh các hoạt động tương tác với một dịch vụ mà không cần phải tạo trước tính năng hỗ trợ HTTP trong ứng dụng.
Làm cách nào để lấy thông tin ghi nhật ký HTTP trong thư viện ứng dụng Java?

Thư viện ứng dụng Java sử dụng gói java.util.logging để bật tính năng ghi nhật ký các yêu cầu HTTP. Điều này sẽ cho phép bạn bật tính năng ghi nhật ký tiêu đề cho các yêu cầu và phản hồi, cũng như mã trạng thái và URL yêu cầu. Hiện tại, tính năng này không ghi nhật ký toàn bộ luồng yêu cầu và phản hồi. Tên trình ghi nhật ký được dùng cho các nhật ký này là com.google.gdata.client.http.HttpGDataRequest.

Trong trường hợp mã lỗi được trả về từ máy chủ, một Ngoại lệ sẽ được gửi đi. Các lớp ngoại lệ kế thừa từ com.google.gdata.util.ServiceException và bao gồm một phương thức công khai có tên là getResponseBody(). Hãy xem Javadoc để biết thêm thông tin.

Làm cách nào để lấy thông tin ghi nhật ký HTTP trong thư viện ứng dụng .NET?
Thư viện .NET sử dụng các phương thức theo dõi System.Diagnostics để ghi nhật ký đường dẫn thực thi, nếu bạn bật tính năng theo dõi. Ngoài ra, trong trường hợp có lỗi, GDataRequestException sẽ được gửi. Ngoại lệ này chứa một ResponseString cho phép bạn truy cập vào nội dung của phản hồi HTTP.
Làm cách nào để bật tính năng mã hoá gzip trong nguồn cấp dữ liệu của Google?

Để nhận được phản hồi được mã hoá gzip từ một trong các API Dữ liệu của Google, bạn phải thực hiện hai việc: đặt tiêu đề "Accept-Encoding" và sửa đổi tác nhân người dùng để chứa chuỗi "gzip". Ví dụ về tiêu đề được định dạng đúng cách:

User-Agent: my program (gzip)
Accept-Encoding: gzip
Tại sao tôi thấy lỗi "Không thể kết nối với sslv2" khi sử dụng ứng dụng PHP?

Kể từ tháng 7 năm 2009, chúng tôi bắt đầu tắt SSLv2 trên các máy chủ của mình như một biện pháp phòng ngừa để cải thiện tính bảo mật. Rất tiếc, có một lỗi trong các phiên bản đầu của thư viện ứng dụng PHP được phát hành trước tháng 7 năm 2007 (phiên bản 1.0.0 trở xuống) buộc các kết nối phải sử dụng SSLv2. Khi kết nối với một máy chủ đã tắt SSLv2, bạn sẽ gặp lỗi sau:

PHP Fatal error:  Uncaught exception 'Zend_Http_Client_Adapter_Exception' with message 'Unable to Connect to sslv2://www.google.com:443.'

Để khắc phục lỗi này, hãy nâng cấp lên một bản phát hành mới hơn của thư viện ứng dụng PHP, có tại http://framework.zend.com/download.

Nếu không thể nâng cấp lên một bản phát hành mới hơn, bạn có thể khắc phục vấn đề này bằng cách thêm mã sau vào ứng dụng của mình, trong đó $gdata là phiên bản hiện có của Zend_Gdata (hoặc lớp con thích hợp):

$gdata->getHttpClient()->setConfig(array('ssltransport' => 'ssl'));
Làm cách nào để lấy tài liệu dịch vụ Atom mô tả một nguồn cấp dữ liệu?

Bạn có thể nhận được tài liệu dịch vụ Atom bằng cách truyền tham số alt=atom-service trong yêu cầu. Lưu ý: Chỉ phiên bản 2 của Google Data API mới trả về một tài liệu dịch vụ tuân theo cú pháp tài liệu dịch vụ AtomPub. Phiên bản 1 của Google Data API vẫn sẽ trả về một tài liệu dịch vụ nhưng dựa trên bản nháp đặc tả AtomPub trước đó (có sự thay đổi về cú pháp và không gian tên giữa hai phiên bản).