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

    Tổng quan

  1. API Dữ liệu của Google là gì?
  2. Tôi có một yêu cầu về tính năng hoặc một báo cáo lỗi. Tôi nên đăng bài ở đâu?
  3. Tôi nên đặt câu hỏi ở đâu về một API cụ thể?
  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 sử dụng REST?
  7. Bạn có bí quyết hoặc mã mẫu ngắn nào cho các vấn đề thường gặp không?
  8. Gmail có API dữ liệu không?
  9. Xác thực

  10. Tên dịch vụ trong ClientLogin cho từng API dữ liệu là gì?
  11. Khi đăng xuất khỏi một ứng dụng, người dùng có cần phải thông báo cho 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ó 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 thông 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 này có hết hạn không?
  17. Sự 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 của bên thứ 3 không?
  19. CAPTCHA là gì?
  20. Làm cách nào để tạo hình ảnh xác thực CAPTCHA?
  21. Tôi có nên dùng ClientLogin trong ứng dụng web của mình không?
  22. Làm cách nào để tìm tên người dùng của 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 API của Google Data API?
  25. Làm cách nào để sử dụng ClientLogin với các 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?
  28. Làm cách nào để báo cáo lỗi hoặc yêu cầu về tính năng cho một trong những thư viện ứng dụng Google Data?
  29. Làm cách nào để bật các tuỳ chọn gỡ lỗi trong thư viện ứng dụng?
  30. Tôi có thể tìm tài liệu tham khảo cho các lớp trong thư viện ứng dụng ở đâu?
  31. Khắc phục sự cố

  32. Đâu là một số công cụ tốt để 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 từ nguồn cấp Dữ liệu của Google?
  36. Tại sao tôi gặp 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 để tải tài liệu dịch vụ Atom mô tả nguồn cấp dữ liệu?

Tổng quan

API Dữ liệu của Google là gì?

API Dữ liệu của Google là một API dựa trên giao thức Dữ liệu của Google. Giao thức Dữ liệu của Google dựa trên đị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 trên Google mở rộng các tiêu chuẩn đó theo nhiều cách và sử dụng cơ chế mở rộng được tích hợp trong các tiêu chuẩn này. 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 theo 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ể sử dụng API này để gửi truy vấn và nội dung cập nhật đến bất kỳ API dữ liệu nào.

Tôi có một yêu cầu về tính năng hoặc một báo cáo lỗi. Tôi nên đăng bài ở đâu?
Hãy xem công cụ theo dõi lỗi của chúng tôi. Tìm yêu cầu về tính năng và gắn dấu sao cho yêu cầu đó để hỗ trợ bạn thêm và nhận thông tin cập nhật về trạng thái của tính năng đó.
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 liệt kê ở đây hoặc bạn muốn hiểu rõ hơn, 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 tham chiếu đến Ký hiệu đối tượng JavaScript.

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

Hãy đọc thêm về Sử dụng JSON với API Google Data.

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 API Dữ liệu của Google là XML, ở 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 khác 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ề bản trình bày JSON của cấu trúc XML của 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" hơn trong mã ứng dụng JavaScript. Hiện tại, bạn chỉ có thể sử dụng JSON dưới dạng tuỳ chọn chỉ có thể đọ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 sẽ cho phép cả đọc và ghi dữ liệu.

    Đọc thêm về 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ả trả về dưới dạng chuỗi XML Atom thay vì JSON.
  • alt=rss-in-script
    Tương tự như alt=atom-in-script, nhưng kết quả trả về dưới dạng chuỗi RSS XML thay vì Atom.

Hãy đọc 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 sử dụng REST?
REST đơn giản, nhẹ, có thể mở rộng và liên kết rất tốt để đại diện và tiết lộ dữ liệu.
Bạn có biết mẹo hay mã ngắn nào cho các vấn đề thường gặp không?
Bạn nên duyệt xem Blog về các mẹo về API Dữ liệu của Google để được trợ giúp về cả thư viện ứng dụng và đưa ra yêu cầu thô.
Gmail có API dữ liệu không?

Không, nhưng bạn có thể dùng nguồn cấp dữ liệu Atom của Gmail bằng AuthSub hoặc OAuth 1 để yêu cầu quyền chỉ đọc đối với thư chưa đọc của người dùng. Bạn nên đặt phạm vi là https://mail.google.com/mail/feed/atom/. Một truy vấn mẫu sẽ là:

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

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


Xác thực

Trong tài liệu về API Dữ liệu của Google, "OAuth" là tham chiếu đến OAuth 1; để biết thông tin chi tiết về OAuth 2.0, hãy xem tài liệu về API cá nhân của bạn.

Tên dịch vụ trong ClientLogin cho từng API Dữ liệu 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 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à quản lý miền)
apps
API Dữ liệu của Google Sites jotspot
API Dữ liệu của Blogger blogger
API Dữ liệu tìm kiếm sách print
API Dữ liệu Lịch cl
API Dữ liệu của Google Code Search codesearch
API Dữ liệu danh bạ cp
Content API for Shopping structuredcontent
API Dữ liệu danh sách tài liệu writely
API Dữ liệu tài chính finance
Nguồn cấp dữ liệu Atom Gmail mail
API Dữ liệu sức khoẻ health
weaver (hộp cát H9)
API dữ liệu Maps local
API Dữ liệu Album Web Picasa lh2
API dữ liệu Sidewiki annotateweb
API Dữ liệu bảng tính wise
API Công cụ quản trị trang web 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 về ClientLogin.

Khi đăng xuất khỏi một ứng dụng, người dùng có cần thông báo cho các máy chủ API không?
Không, bạn không cần phải 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, ứng dụng của bạn sẽ phải 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 đăng nhập của khách hàng có thể tồn tại trong 2 tuần kể từ ngày phát hành. Tuy nhiên, 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ó câu hỏi chung về Tài khoản Google. Tôi nên đi đâu?
Truy cập Trung tâm trợ giúp của Tài khoản Google.
Làm cách nào để xác thực API?
Yêu cầu HTTP của bạn phải bao gồm 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 thông số phạm vi AuthSub/Oauth 1?
Thông tin scope là yêu cầu bắt buộc bởi AuthSub và OAuth 1 để 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ể.

Google API Tên dịch vụ đăng nhập khách hàng
API Dữ liệu của Google Analytics https://www.google.com/analytics/feeds/
API Dữ liệu của Google Sites http(s)://sites.google.com/feeds/
API Dữ liệu của Blogger http://www.blogger.com/feeds/
API Dữ liệu tìm kiếm sách http://www.google.com/books/feeds/
API Dữ liệu Lịch http(s)://www.google.com/calendar/feeds/
API Dữ liệu danh bạ http(s)://www.google.com/m8/feeds/
Content API for Shopping https://www.googleapis.com/auth/structuredcontent
API Dữ liệu danh sách tài liệu http(s)://docs.google.com/feeds/
API Dữ liệu tài chính http://finance.google.com/finance/feeds/
Nguồn cấp dữ liệu Atom Gmail https://mail.google.com/mail/feed/atom/
API Dữ liệu sức khoẻ https://www.google.com/health/feeds/
https://www.google.com/h9/feeds/ (hộp cát H9)
API Dữ liệu Maps http://maps.google.com/maps/feeds/
API Dữ liệu Album Web Picasa http://picasaweb.google.com/data/
API Danh bạ di động http://www-opensocial.googleusercontent.com/api/people
API dữ liệu Sidewiki http://www.google.com/sidewiki/feeds/
API Dữ liệu bảng tính http(s)://spreadsheets.google.com/feeds/
API Công cụ quản trị trang web http://www.google.com/webmasters/tools/feeds/
API Dữ liệu YouTube http://gdata.youtube.com
Có các loại mã thông báo AuthSub khác không? Mã thông báo này có hết hạn không?
Có hai loại mã thông báo AuthSub. Đầu tiên là một mã thông báo sử dụng duy nhất được hiển thị 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 lần đầu tiên được sử dụng với dịch vụ mà mã này được phát hành hoặc khi mã được đổi lấy một mã thông báo phiên.

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

AuthSub được thiết kế cho ứng dụng web. Đảm bảo 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 máy chủ của Google một cách an toàn thay vì thông qua 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. Ứng dụng này yêu cầu ứng dụng yêu cầu truyền thông tin xác thực của người dùng cho Google thay mặt người dùng.

Xem tài liệu về API Xác thực Tài khoản Google.

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?
Chúng tôi chấp nhận việc dùng ClientLogin trong các ứng dụng web của bên thứ ba, nhưng không khuyến khích thực hiện. Phương pháp hay nhất là ứng dụng web không bao giờ yêu cầu người dùng cung cấp thông tin đăng nhập (điều này có thể dễ bị gián đoạn). Thay vào đó, ứng dụng nên lưu trữ thông tin xác thực 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 dùng để xác thực với Google.
CAPTCHA là gì?
hình ảnh xác thực (CAPTCHA) hoàn toàn tự động để xác định người dùng và máy tính là một loại kiểm thử, dùng để xác định xem người dùng có phải là người dùng hay không. Cụm từ này được đăng ký nhãn hiệu bởi Đại học Carnegie Mellon. Xem thêm thông tin chi tiết trên Wikipedia. Chúng tôi đã triển khai CAPTCHA trong ClientLogin.
Làm cách nào để tạo hình ảnh xác thực CAPTCHA?
Thuật toán độc quyền được dùng để xác định thời điểm cần có hình ảnh xác thực CAPTCHA trong quá trình xác thực. Những lần xác thực lặp lại có thông tin xác thực 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, ứng dụng đã cài đặt nên sử dụng ClientLogin trên phần cứng thuộc sở hữu của người dùng. Việc sử dụng API ClientLogin trong các ứng dụng web không an toàn và không được khuyến khích.
Làm cách nào để tìm tên người dùng của người dùng khi sử dụng AuthSub/OAuth 1?
Vì bạn chỉ được cấp một mã thông báo của Google để cấp quyền truy cập vào nguồn cấp dữ liệu của người dùng, nên có thể bạn không biết tên người dùng của họ là gì. Đ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 này. Trong trường hợp này, bạn có thể sử dụng tên người dùng đặc biệt default để gọi "người dùng có mã xác thực mà tôi đang sử dụng".
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 API dữ liệu của Google.
Làm cách nào để sử dụng AuthSub với các thư viện ứng dụng API của Google Data API?
Xem bài viết Sử dụng AuthSub với Thư viện ứng dụng API Google Data.
Làm cách nào để sử dụng ClientLogin với các thư viện ứng dụng của API Dữ liệu Google?
Xem bài viết Sử dụng ClientLogin với Thư viện ứng dụng API dữ liệu của Google.

Thư viện ứng dụng

Thư viện ứng dụng được Google hỗ trợ ở những ngôn ngữ lập trình nào?

Các thư viện ứng dụng Java, .NET, PythonObjective-C đã chính thức được Google hỗ trợ. Ngoài ra, đối tác Zend của chúng tôi cũng đã viế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 yêu cầu giao thức Dữ liệu 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ợ Danh bạ Google, Blogger và Lịch.

Nếu bạn viết một thư viện ứng dụng bằng ngôn ngữ không phải Java, .Net, Python hoặc Objective-C và muốn chia sẻ với cộng đồng nhà phát triển API Dữ liệu, hãy đăng trong nhóm thảo luận của Google Data API. 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 về tính năng cho một trong những 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 các thư viện ứng dụng ở các vị trí sau:

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

Làm cách nào để bật các tuỳ chọn gỡ lỗi trong thư viện ứng dụng Google Data API?
Vui lòng xem bài viết sau để biết thông tin về cách bật tính năng gỡ lỗi với một số thư viện ứng dụng: Gỡ lỗi ứng dụng API dữ liệu của Google: Khám phá lưu lượng truy cập từ trong chương trình của bạn
Tôi có thể tìm tài liệu tham khảo ở đâu cho các lớp trong thư viện ứng dụng?
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ố

Một số công cụ tốt để gỡ lỗi HTTP là gì?

Có một số công cụ liệt kê dưới đây, nhưng bạn cũng nên đọc bài viết Trên mạng: Công cụ thu thập mạng cho nhà phát triển API mô tả chi tiết các ví dụ về cả WireShark và Fiddler.

Wireshark
Wireshark là "trình phân tích giao thức mạng". Công cụ này cho phép bạn nắm bắt lưu lượng truy cập mạng và phân tích nội dung. Việ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 yêu cầu HTTP và các luồng phản hồi. Không thể phân tích lưu lượng truy cập giữa ứng dụng và dịch vụ xác thực bằng Wireshark vì giao tiếp được mã hoá bằng SSL. Wireshark cũng có thể được dùng để phân tích lưu lượng truy cập được thu thập bằng cách sử dụng các công cụ như tcpdump. Nhà phát triển có thể dùng Wireshark dưới dạng cả mã nguồn và trình cài đặt Windows. 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, Fiddler sẽ nằm giữa ứng dụng và dịch vụ dữ liệu Google để có thể kiểm tra lưu lượng truy cập. Fiddler 2 bao gồm hỗ trợ SSL. Fiddler hiện chỉ có sẵn cho Windows.
URL
cURL là công cụ dòng lệnh có thể thực hiện các yêu cầu HTTP/HTTPS. Thao tác này rất hữu ích cho việc kiểm tra nhanh các lượt tương tác với một dịch vụ mà không cần phải tạo trước hỗ trợ HTTP trong ứng dụng khách.
Làm cách nào để nhận 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 để cho phép 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ý các 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. Tính năng này hiện không ghi lại toàn bộ yêu cầu và luồng phản hồi. Tên trình ghi nhật ký được sử dụng cho các nhật ký này là com.google.gdata.client.http.HttpGDataRequest.

Trong trường hợp máy chủ trả về một mã lỗi, hệ thống sẽ gửi một trường hợp ngoại lệ. 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 xảy ra lỗi, GDataRequestException sẽ được gửi ra. Trường hợp ngoại lệ 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 từ nguồn cấp dữ liệu của Google?

Để nhận phản hồi được mã hoá gzip từ một trong những API Dữ liệu của Google, bạn phải thực hiện hai việc: đặt tiêu đề "Chấp nhận-Mã hoá" 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:

User-Agent: my program (gzip)
Accept-Encoding: gzip
Tại sao tôi gặp 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 vô hiệu hoá SSLv2 trên các máy chủ như một biện pháp phòng ngừa nhằm tăng cường bảo mật. Rất tiếc, có một lỗi trong các phiên bản đầu tiên 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ở về trước) buộc các kết nối phải sử dụng SSLv2. Khi kết nối với máy chủ đã tắt SSLv2, lỗi này sẽ xuất hiện sau đây:

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 thư viện ứng dụng PHP mới hơn, phát hành tại http://framework.zend.com/download.

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

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

Bạn có thể lấy 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 API Dữ liệu Google mới trả về 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 API Dữ liệu Google sẽ vẫn trả về tài liệu dịch vụ nhưng tài liệu này dựa trên quy cách bản nháp AtomPub trước đó (có thay đổi về cú pháp và không gian tên giữa hai phiên bản).