Xác thực và uỷ quyền trong Giao thức dữ liệu của Google

Cảnh báo: Trang này giới thiệu về các API cũ của Google, API dữ liệu của Google; trang này chỉ liên quan đến các API được liệt kê trong thư mục API dữ liệu của Google, nhiều API trong số này đã được thay thế bằng các API mới hơn. Để biết thông tin về một API mới cụ thể, hãy xem tài liệu của API mới. Để biết thông tin về việc uỷ quyền cho các yêu cầu bằng một API mới hơn, hãy xem phần Xác thực và ủy quyền tài khoản Google.

Các ứng dụng bên thứ ba thường yêu cầu quyền truy cập hạn chế vào Tài khoản Google của người dùng đối với một số loại hoạt động nhất định. Để đảm bảo dữ liệu người dùng không bị sử dụng sai mục đích, tất cả các yêu cầu truy cập phải được chủ tài khoản phê duyệt. Chế độ kiểm soát quyền truy cập có hai thành phần là xác thực và uỷ quyền.

Dịch vụ xác thực cho phép người dùng đăng nhập vào ứng dụng bằng Tài khoản Google.

Dịch vụ uỷ quyền cho phép người dùng cấp cho ứng dụng của bạn quyền truy cập vào dữ liệu họ đã lưu trữ trong các ứng dụng của Google. Google rất coi trọng quyền riêng tư, và bất kỳ ứng dụng nào yêu cầu quyền truy cập vào dữ liệu của người dùng đều phải được người dùng cho phép.

Các dịch vụ xác thực và uỷ quyền thường được gọi chung là xác thực.

Việc xác thực và uỷ quyền cho các API của Google cho phép các ứng dụng bên thứ ba bị hạn chế truy cập vào Tài khoản Google của người dùng đối với một số loại hoạt động nhất định. Tài liệu này giới thiệu cơ chế xác thực có sẵn và mô tả từng cơ chế cung cấp cho ứng dụng của bạn.

  • Tính năng Đăng nhập bằng Google đưa ra một cách đơn giản để cho phép mọi người dùng thông tin đăng nhập Google của họ để đăng nhập vào trang web của bạn. Tài khoản này bao gồm một bộ công cụ dễ dàng tích hợp trên nhiều thiết bị.
  • OAuth 2.0 là giao thức cấp phép cho tất cả API của Google. OAuth 2.0 dựa vào SSL để bảo mật thay vì yêu cầu ứng dụng của bạn thực hiện ký chữ ký mã hoá trực tiếp. Giao thức này cho phép ứng dụng của bạn yêu cầu quyền truy cập vào dữ liệu liên kết với Tài khoản Google của người dùng.
  • Đăng nhập bằng OAuth 2.0 (OpenID Connect) xác thực người dùng bằng cách yêu cầu họ đăng nhập bằng Tài khoản Google của họ. Đây là phiên bản thay thế cho OpenID và người dùng bookmarklet nên lên kế hoạch chuyển sang Đăng nhập bằng OAuth 2.0.

Nếu ứng dụng của bạn là một tiện ích (để sử dụng trong iGoogle hoặc các vùng chứa OpenSocial khác), hãy xem phần Xác thực tiện ích.

Lưu ý: Tài liệu này nhằm cung cấp thông tin tổng quan về từng phương thức xác thực. Để biết thông tin chi tiết về từng phương pháp, hãy xem tài liệu đầy đủ về API xác thực tài khoản của Google.

Xem thêm Nhóm API Tài khoản Google để thảo luận về cách sử dụng API Tài khoản Google.

OAuth – uỷ quyền cho các ứng dụng web và ứng dụng đã cài đặt

Nhiều dịch vụ của Google cho phép bên thứ ba truy cập vào dữ liệu do người dùng tạo, chẳng hạn như dữ liệu Lịch hoặc Tài liệu, miễn là người dùng được người dùng cho phép. Tính năng này cho phép người dùng chia sẻ và trao đổi dữ liệu giữa các ứng dụng Google của họ và các ứng dụng bên thứ ba cho nhiều mục đích.

Google hỗ trợ hai phiên bản OAuth để cấp quyền truy cập vào dữ liệu Google của người dùng: OAuth 1.0 và OAuth 2.0, cả hai đều cung cấp quyền truy cập vào cả ứng dụng web và ứng dụng đã cài đặt.

OAuth 2.0 cho web và các ứng dụng đã cài đặt

Các ứng dụng web hoặc ứng dụng đã cài đặt có thể sử dụng giao thức OAuth 2.0 mới, tinh giản để cho phép truy cập vào dữ liệu liên kết với một Tài khoản Google. Để biết thông tin chi tiết và ví dụ về cách triển khai OAuth 2.0 với Google, hãy xem tài liệu về OAuth 2.0 của chúng tôi.

OAuth 1.0 cho ứng dụng web

Ứng dụng web cần quyền truy cập vào dữ liệu được liên kết với Tài khoản Google hoặc Tài khoản Google Apps được phép có thể sử dụng việc triển khai API OAuth của Google. Để biết thông tin đầy đủ về cách triển khai OAuth cho các ứng dụng dựa trên web, bao gồm cả các ví dụ, hãy xem hướng dẫn OAuth cho ứng dụng web hoặc xem tổng quan trong tài liệu này.

OAuth 1.0 cho ứng dụng đã cài đặt

Các ứng dụng được cài đặt trên máy tính và thiết bị di động của người dùng có thể sử dụng OAuth để cho phép truy cập vào dữ liệu liên kết với Tài khoản Google. Để biết thông tin đầy đủ về cách triển khai OAuth cho các ứng dụng đã cài đặt, hãy xem hướng dẫn OAuth cho các ứng dụng đã cài đặt hoặc xem tổng quan trong tài liệu này.

Sử dụng OAuth với các ứng dụng web

Tất cả API dữ liệu của Google đều hỗ trợ OAuth, một tiêu chuẩn mở để ủy quyền sử dụng dữ liệu trong các ứng dụng web. Tất cả ứng dụng web đưa ra yêu cầu OAuth đều phải tải chứng chỉ bảo mật lên và đăng ký với Google. Xem Đăng ký các ứng dụng dựa trên web để biết thêm thông tin.

Thư viện ứng dụng API Dữ liệu của Google cung cấp các phương thức giúp bạn sử dụng OAuth trong ứng dụng web. Cụ thể, có các phương thức để tạo mã thông báo yêu cầu, uỷ quyền mã thông báo yêu cầu và trao đổi mã thông báo yêu cầu được uỷ quyền để lấy mã truy cập. Thư viện cũng xử lý các thuật toán ký cần thiết khi gửi yêu cầu đến một dịch vụ Dữ liệu của Google. Để biết ví dụ mở rộng về cách sử dụng OAuth với Thư viện ứng dụng API dữ liệu của Google,hãy xem phần Sử dụng OAuth với Thư viện ứng dụng API dữ liệu của Google.

Quy trình uỷ quyền OAuth

Quy trình uỷ quyền OAuth bao gồm một loạt tương tác giữa ứng dụng web, máy chủ uỷ quyền của Google và người dùng cuối.

Ở cấp độ cơ bản, quy trình như sau:

  1. Ứng dụng của bạn yêu cầu quyền truy cập và nhận được mã thông báo yêu cầu trái phép từ máy chủ uỷ quyền của Google.
  2. Google yêu cầu người dùng cấp cho bạn quyền truy cập vào dữ liệu cần thiết.
  3. Ứng dụng của bạn sẽ nhận được một mã thông báo yêu cầu được uỷ quyền qua máy chủ uỷ quyền.
  4. Bạn sẽ trao đổi mã thông báo yêu cầu được uỷ quyền cho một mã truy cập.
  5. Bạn sử dụng mã truy cập để yêu cầu dữ liệu từ các máy chủ truy cập dịch vụ của Google.

Khi ứng dụng của bạn yêu cầu quyền truy cập vào dữ liệu của người dùng lần đầu, Google sẽ cấp một mã thông báo yêu cầu trái phép cho ứng dụng của bạn.

Nếu người dùng chưa đăng nhập, Google sẽ nhắc người dùng đăng nhập. Sau đó, Google sẽ hiển thị trang uỷ quyền cho phép người dùng xem dữ liệu dịch vụ của Google mà ứng dụng của bạn đang yêu cầu quyền truy cập.

Nếu người dùng chấp thuận yêu cầu truy cập của ứng dụng, Google sẽ phát hành một mã thông báo yêu cầu được uỷ quyền. Mỗi mã thông báo yêu cầu chỉ có hiệu lực trong một giờ. Bạn chỉ có thể trao đổi mã yêu cầu được uỷ quyền cho mã truy cập và chỉ có thể thực hiện việc trao đổi này một lần cho mỗi mã yêu cầu.

Theo mặc định, mã truy cập tồn tại lâu dài. Mỗi mã truy cập dành riêng cho một tài khoản người dùng được chỉ định trong yêu cầu uỷ quyền ban đầu và chỉ cấp quyền truy cập cho các dịch vụ được chỉ định trong yêu cầu đó. Ứng dụng của bạn nên lưu trữ mã thông báo truy cập một cách an toàn vì cần phải có tất cả quyền truy cập vào dữ liệu của người dùng.

Chuẩn bị sẵn sàng cho OAuth

Trước khi có thể thiết lập ứng dụng để sử dụng dịch vụ Uỷ quyền của Google với OAuth, bạn phải hoàn thành các thao tác sau.

Quyết định có đăng ký ứng dụng web của bạn hay không

Để cung cấp cho người dùng sự bảo đảm bổ sung về bảo mật dữ liệu của họ, bạn có thể chọn đăng ký ứng dụng web với Google và ký yêu cầu của bạn bằng chứng chỉ bảo mật đã đăng ký. Một số nguồn cấp dữ liệu API của Google chỉ dành cho các ứng dụng đã đăng ký. Xem tài liệu về API Dữ liệu của Google mà bạn quan tâm để xác định xem API đó có chỉ hoạt động với các ứng dụng đã đăng ký hay không.

Ứng dụng của bạn phải ký từng yêu cầu OAuth mà ứng dụng đó tạo. Nếu chọn sử dụng chữ ký RSA-SHA1 để ký yêu cầu, bạn phải tải một chứng chỉ bảo mật lên trong quá trình đăng ký.

Ngoài ra, bạn cũng có thể sử dụng chữ ký HMAC-SHA1 để ký các yêu cầu của mình. Bạn không cần phải có chứng chỉ đối với chữ ký HMAC-SHA1. Thay vào đó, Google sẽ tạo giá trị OAuth consumer secret, giá trị này sẽ hiển thị trên trang đăng ký của miền sau khi bạn đăng ký.

Để biết thêm thông tin về quy trình đăng ký, hãy xem phần Đăng ký các ứng dụng web.

Xác định phạm vi dữ liệu mà ứng dụng của bạn sẽ truy cập

Mỗi dịch vụ của Google đều đặt giới hạn về quyền truy cập mà dịch vụ này cho phép thông qua API Google Dữ liệu. Quyền truy cập này được biểu thị dưới dạng giá trị phạm vi. Một số dịch vụ cung cấp nhiều giá trị phạm vi, cho phép người dùng chọn những ứng dụng có quyền truy cập vào dữ liệu. Để biết thông tin về các giá trị phạm vi có sẵn cho dịch vụ Google mà bạn muốn truy cập, hãy xem tài liệu cho dịch vụ đó.

Nhìn chung, bạn nên yêu cầu mã thông báo cho phạm vi hẹp nhất bao gồm dữ liệu mà bạn cần. Ví dụ: nếu ứng dụng của bạn yêu cầu quyền truy cập vào nguồn cấp dữ liệu "Tất cả các lịch" của người dùng, bạn nên yêu cầu mã thông báo cho phạm vi http://www.google.com/calendar/feeds/default/allcalendars/full.

Thiết lập cơ chế quản lý mã thông báo OAuth

Khi nhận được mã truy cập OAuth cho dữ liệu của người dùng, bạn phải sử dụng mã truy cập đó cho tất cả các lượt tương tác trong tương lai với dịch vụ của Google được chỉ định thay mặt cho người dùng.

Ứng dụng của bạn phải quản lý bộ nhớ mã thông báo một cách an toàn, bao gồm cả việc theo dõi dịch vụ của Google mà mỗi mã thông báo này hợp lệ. Nếu cần quyền truy cập vào nhiều dịch vụ của Google, thì bạn có thể lấy nhiều mã truy cập, nhưng không quá 10 mã truy cập cho mỗi người dùng và ứng dụng bất cứ lúc nào.

Nếu ứng dụng của bạn hỗ trợ nhiều tài khoản người dùng, bạn phải theo dõi xem mỗi mã thông báo được liên kết với tài khoản nào. Mỗi mã thông báo OAuth là dành riêng cho người dùng đã cấp quyền truy cập. Ứng dụng của bạn phải có thể liên kết mã thông báo với đúng người dùng. Có một cách để quản lý việc này là phát hành cookie cho người dùng trước khi yêu cầu mã thông báo. Sau khi người dùng cấp quyền truy cập vào dữ liệu đã yêu cầu, Google sẽ gửi một mã thông báo yêu cầu được uỷ quyền và chuyển hướng người dùng đó đến ứng dụng của bạn. Sau đó, bạn có thể dùng cookie của ứng dụng để liên kết mã thông báo với đúng người dùng.

Thiết lập cơ chế để yêu cầu quyền truy cập vào một dịch vụ của Google

Mỗi yêu cầu đến một dịch vụ của Google phải được ký và bao gồm một mã truy cập OAuth hợp lệ. Nhìn chung, mỗi yêu cầu được thực hiện dưới dạng một yêu cầu HTTP GET, trong đó mã truy cập và chữ ký có trong tiêu đề. Các yêu cầu viết dữ liệu mới phải sử dụng yêu cầu POST qua HTTP.

Để biết thêm thông tin về định dạng yêu cầu phù hợp cho từng API Dữ liệu của Google, hãy tham khảo tài liệu về API đó.

Triển khai chìa khoá (không bắt buộc)

Nếu bạn đang triển khai MPN để xác thực người dùng, hãy cân nhắc sử dụng giao thức kết hợp để kết hợp hai quy trình này. Với OpenID+OAuth, tác vụ lấy mã yêu cầu và uỷ quyền cho mã này sẽ được xử lý trong yêu cầu WHOIS bằng các tiện ích OAuth. Cũng giống như với OAuthGetRequestToken, các tiện ích này được dùng để xác định các dịch vụ của Google cần truy cập. Một phản hồi thành công đối với yêu cầu WHOIS có chứa mã thông báo yêu cầu được ủy quyền. Sau khi nhận được mã thông báo này, hãy sử dụng OAuthGetAccessToken để đổi mã lấy mã truy cập.

Xử lý mã thông báo OAuth

Để sử dụng OAuth, ứng dụng của bạn phải tạo các lệnh gọi mã yêu cầu mã thông báo có định dạng hợp lệ và xử lý các phản hồi cho trình tự sau:

  1. Lấy mã thông báo yêu cầu trái phép (OAuthGetRequestToken)
  2. Cho phép mã thông báo yêu cầu (OAuthUToToken)
  3. Trao đổi mã yêu cầu được uỷ quyền cho mã thông báo truy cập (OAuthGetAccessToken)

Bạn phải ký tất cả các yêu cầu OAuth, dù ứng dụng của bạn có được đăng ký hay không. Để biết thêm thông tin, hãy xem phần Ký yêu cầu OAuth.

Bạn có thể thử nghiệm với việc yêu cầu và nhận mã thông báo uỷ quyền trong OAuth Playground.

Để xem tài liệu chi tiết, hãy xem Tài liệu tham khảo API OAuth.

Đặt URL gọi lại

Bạn có thể chỉ định một giá trị cho oauth_callback trong yêu cầu OAuthGetRequestToken để xác định nơi Google chuyển hướng người dùng sau khi họ cho phép bạn yêu cầu quyền truy cập. URL gọi lại có thể bao gồm các tham số truy vấn. Lệnh chuyển hướng sẽ bao gồm cùng các thông số truy vấn, cũng như mã yêu cầu được ủy quyền mà ứng dụng của bạn phải có thể phân tích cú pháp.

Ví dụ: khi hỗ trợ nhiều ngôn ngữ, bạn có thể bao gồm tham số truy vấn để xác định phiên bản ứng dụng mà người dùng đang xem. Giá trị oauth_callback của "http://www.yoursite.com/Retrievetoken?Lang=de sẽ dẫn đến việc chuyển hướng "http://www.yoursite.com/Retrievetoken?Lang=de&OAuth_token=DQAADKEDE". Việc phân tích mã thông báo và thông số ngôn ngữ đảm bảo rằng người dùng được chuyển hướng trở lại đúng phiên bản trang web.

Nếu tham số oauth_callback không được đưa vào, Google sẽ hướng người dùng đến một trang web hiển thị số xác minh (xem ví dụ), sau khi cho phép yêu cầu truy cập của bạn. Người dùng phải quay lại ứng dụng của bạn theo cách thủ công và nhập số xác minh trước khi bạn có thể nhận được mã thông báo yêu cầu được uỷ quyền.

Xác định ứng dụng của bạn cho người dùng

Google thường hiển thị tên của ứng dụng khi người dùng yêu cầu sự đồng ý truy cập (xem ví dụ).

Nếu ứng dụng của bạn chưa được đăng ký, hãy sử dụng tham số xoauth_displayname trong yêu cầu OAuthGetRequestToken để chỉ định tên ứng dụng. Nếu tham số đó không được chỉ định, Google sẽ hiển thị tên miền của URL do tham số oauth_callback cung cấp. Nếu không có URL gọi lại nào được cung cấp, Google sẽ hiển thị chuỗi "ẩn danh".

Không đặt thông số này nếu ứng dụng của bạn được đăng ký. Theo mặc định, Google sẽ hiển thị tên hiển thị được chỉ định trong quá trình đăng ký. Nếu bạn đặt tên hiển thị trong yêu cầu OAuthGetRequestToken, Google sẽ sử dụng tên này thay vì tên hiển thị đã đăng ký của bạn, và sẽ bao gồm một thông báo cho biết không thể xác minh danh tính của ứng dụng của bạn.

Lưu ý: Để đặt tham số xoauth_displayname trong OAuth Playground, hãy đánh dấu vào hộp "Nâng cao" trước khi tìm nạp mã thông báo yêu cầu.

Làm việc với miền Google Apps

Nếu ứng dụng của bạn được thiết kế cho người dùng trên miền lưu trữ của Tài khoản Google, hãy cân nhắc sử dụng tham số hd khi uỷ quyền mã thông báo. Để biết thêm thông tin về tham số hd, hãy xem bài viết Xử lý người dùng bằng nhiều tài khoản.

Thông tin thêm về OAuth

Để biết thông tin chi tiết về việc triển khai OAuth của Google, bao gồm cách đăng ký ứng dụng và tạo các tham số OAuth cần thiết, hãy xem các tài nguyên bổ sung sau:

Trở lại đầu trang

Sử dụng OAuth với các ứng dụng đã cài đặt

Tất cả API dữ liệu của Google đều hỗ trợ OAuth, một tiêu chuẩn mở để ủy quyền sử dụng dữ liệu trong các ứng dụng. Bạn không cần đăng ký ứng dụng đã cài đặt với Google để sử dụng OAuth.

Quy trình uỷ quyền OAuth

Quá trình uỷ quyền OAuth bao gồm một loạt tương tác giữa ứng dụng của bạn, máy chủ uỷ quyền của Google và người dùng cuối.

Ở cấp độ cơ bản, quy trình như sau:

  1. Ứng dụng của bạn yêu cầu quyền truy cập và nhận được mã thông báo yêu cầu trái phép từ máy chủ uỷ quyền của Google.
  2. Google yêu cầu người dùng cấp cho bạn quyền truy cập vào dữ liệu cần thiết.
  3. Ứng dụng của bạn sẽ nhận được một mã thông báo yêu cầu được uỷ quyền qua máy chủ uỷ quyền.
  4. Bạn sẽ trao đổi mã thông báo yêu cầu được uỷ quyền cho một mã truy cập.
  5. Bạn sử dụng mã truy cập để yêu cầu dữ liệu từ các máy chủ truy cập dịch vụ của Google.

Khi ứng dụng của bạn yêu cầu quyền truy cập vào dữ liệu của người dùng lần đầu, Google sẽ cấp một mã thông báo yêu cầu trái phép cho ứng dụng của bạn.

Nếu người dùng chưa đăng nhập, Google sẽ nhắc người dùng đăng nhập. Sau đó, Google sẽ hiển thị trang uỷ quyền cho phép người dùng xem dữ liệu dịch vụ của Google mà ứng dụng của bạn đang yêu cầu quyền truy cập.

Nếu người dùng chấp thuận yêu cầu truy cập của ứng dụng, Google sẽ phát hành một mã thông báo yêu cầu được uỷ quyền. Mỗi mã thông báo yêu cầu chỉ có hiệu lực trong một giờ. Bạn chỉ có thể trao đổi mã yêu cầu được uỷ quyền cho mã truy cập và chỉ có thể thực hiện việc trao đổi này một lần cho mỗi mã yêu cầu.

OAuth hỗ trợ các ứng dụng đã cài đặt bằng chế độ chưa đăng ký. Vì có nhiều phương thức để lấy mã thông báo yêu cầu được uỷ quyền, nên ứng dụng của bạn có thể dùng OAuth để uỷ quyền cho một ứng dụng ngay cả khi thiết bị cài đặt ứng dụng không có trình duyệt web.

Theo mặc định, mã truy cập tồn tại lâu dài. Mỗi mã truy cập dành riêng cho một tài khoản người dùng được chỉ định trong yêu cầu uỷ quyền ban đầu và chỉ cấp quyền truy cập cho các dịch vụ được chỉ định trong yêu cầu đó. Ứng dụng của bạn nên lưu trữ mã thông báo truy cập một cách an toàn vì cần phải có tất cả quyền truy cập vào dữ liệu của người dùng.

Chuẩn bị sẵn sàng cho OAuth

Trước khi có thể thiết lập ứng dụng để sử dụng dịch vụ Uỷ quyền của Google với OAuth, bạn phải hoàn thành các thao tác sau.

Xác định phạm vi dữ liệu mà ứng dụng của bạn sẽ truy cập

Mỗi dịch vụ của Google đều đặt giới hạn về quyền truy cập mà dịch vụ này cho phép thông qua API Google Dữ liệu. Quyền truy cập này được biểu thị dưới dạng giá trị phạm vi. Một số dịch vụ cung cấp nhiều giá trị phạm vi, cho phép người dùng chọn những ứng dụng có quyền truy cập vào dữ liệu. Để biết thông tin về các giá trị phạm vi có sẵn cho dịch vụ Google mà bạn muốn truy cập, hãy xem tài liệu cho dịch vụ đó.

Nhìn chung, bạn nên yêu cầu mã thông báo cho phạm vi hẹp nhất bao gồm dữ liệu mà bạn cần. Ví dụ: nếu ứng dụng của bạn yêu cầu quyền truy cập vào nguồn cấp dữ liệu "Tất cả các lịch" của người dùng, bạn nên yêu cầu mã thông báo cho phạm vi http://www.google.com/calendar/feeds/default/allcalendars/full.

Thiết lập cơ chế quản lý mã thông báo OAuth

Khi nhận được mã truy cập OAuth cho dữ liệu của người dùng, bạn phải sử dụng mã truy cập đó cho tất cả các lượt tương tác trong tương lai với dịch vụ của Google được chỉ định thay mặt cho người dùng.

Ứng dụng của bạn phải quản lý bộ nhớ mã thông báo một cách an toàn, bao gồm cả việc theo dõi dịch vụ của Google mà mỗi mã thông báo này hợp lệ.

Nếu ứng dụng của bạn hỗ trợ nhiều tài khoản người dùng, bạn phải theo dõi xem mỗi mã thông báo được liên kết với tài khoản nào.

Thiết lập cơ chế để yêu cầu quyền truy cập vào một dịch vụ của Google

Mỗi yêu cầu đến một dịch vụ của Google phải được ký và bao gồm một mã truy cập OAuth hợp lệ. Nhìn chung, mỗi yêu cầu được thực hiện dưới dạng một yêu cầu HTTP GET, trong đó mã truy cập và chữ ký có trong tiêu đề. Các yêu cầu viết dữ liệu mới phải sử dụng yêu cầu POST qua HTTP.

Để biết thêm thông tin về định dạng yêu cầu phù hợp cho từng API Dữ liệu của Google, hãy tham khảo tài liệu về API đó.

Xử lý mã thông báo OAuth

Để sử dụng OAuth, ứng dụng của bạn phải tạo các lệnh gọi mã yêu cầu mã thông báo có định dạng hợp lệ và xử lý các phản hồi cho trình tự sau:

  1. Lấy mã thông báo yêu cầu trái phép (OAuthGetRequestToken)
  2. Cho phép mã thông báo yêu cầu (OAuthUToToken)
  3. Trao đổi mã yêu cầu được uỷ quyền cho mã thông báo truy cập (OAuthGetAccessToken)

Bạn phải ký tất cả các yêu cầu OAuth, dù ứng dụng của bạn có được đăng ký hay không. Để biết thêm thông tin, hãy xem phần Ký yêu cầu OAuth. Các ứng dụng đã cài đặt phải tuân theo hướng dẫn dành cho ứng dụng chưa được đăng ký.

Bạn có thể thử nghiệm với việc yêu cầu và nhận mã thông báo uỷ quyền trong OAuth Playground.

Để xem tài liệu chi tiết, hãy xem Tài liệu tham khảo API OAuth.

Xác định ứng dụng của bạn cho người dùng

Google thường hiển thị tên của ứng dụng khi người dùng yêu cầu sự đồng ý truy cập (xem ví dụ).

Sử dụng tham số xoauth_displayname trong yêu cầu OAuthGetRequestToken để chỉ định tên của ứng dụng. Nếu tham số đó không được chỉ định, Google sẽ hiển thị tên miền của URL do tham số oauth_callback cung cấp. Nếu không có URL gọi lại nào được cung cấp, Google sẽ hiển thị chuỗi "ẩn danh".

Lưu ý: Để đặt tham số xoauth_displayname trong OAuth Playground, hãy đánh dấu vào hộp "Nâng cao" trước khi tìm nạp mã thông báo yêu cầu.

Chạy trình duyệt web

Trong quá trình uỷ quyền OAuth, ứng dụng của bạn phải đưa ra yêu cầu OAuthAuthorizeToken. Sau đó, người dùng phải đăng nhập vào một trang web của Google và cho phép yêu cầu truy cập của ứng dụng.

  • Chế độ Tự động phát hiện nên được sử dụng cho hầu hết các ứng dụng
  • Bạn nên sử dụng chế độ thiết bị cho các ứng dụng không thể khởi chạy trình duyệt web đầy đủ.
  • Bạn chỉ nên sử dụng chế độ phát triển trong giai đoạn phát triển ban đầu.

Chế độ tự động phát hiện

Nếu có thể, ứng dụng của bạn sẽ chạy một cửa sổ trình duyệt và đưa ra yêu cầu OAuthAuthorizeToken để mở trang Google. Khi Google trả về mã thông báo được uỷ quyền, ứng dụng của bạn sẽ phát hiện mã này và lấy lại tiêu điểm trên trình duyệt web.

Chế độ này yêu cầu bạn cung cấp URL gọi lại mà người dùng được chuyển hướng sau khi cho phép yêu cầu truy cập của bạn. Bạn phải cung cấp URL này dưới dạng tham số oauth_callback của yêu cầu OAuthGetRequestToken và tham số verifier của yêu cầu OAuthGetAccessToken.

Để cải thiện trải nghiệm người dùng, ứng dụng của bạn nên cố gắng tự động phát hiện khi người dùng được chuyển hướng đến URL này, ngay lập tức đưa ứng dụng lên nền trước và đưa ra yêu cầu OAuthGetAccessToken để hoàn tất quy trình OAuth.

Để biết thêm thông tin và các phương pháp hay nhất, hãy xem bài viết Tự động phát hiện yêu cầu phê duyệt.

Nếu ứng dụng không thể tự động phát hiện thời điểm người dùng được chuyển hướng đến URL gọi lại hoặc không thể tự chạy lên nền trước, thì URL gọi lại sẽ hiển thị một trang giải thích cách đưa ứng dụng của bạn lên nền trước và cách bắt đầu yêu cầu OAuthGetAccessToken từ trong ứng dụng của bạn.

Chế độ thiết bị

Nếu ứng dụng của bạn không thể khởi chạy trình duyệt web đầy đủ, thì các thiết bị máy khách cũng có thể uỷ quyền mà không cần trình duyệt web.

Chế độ này cho phép nhà phát triển thiết lập một trang web mà người dùng có thể ủy quyền cho yêu cầu truy cập. Sau khi uỷ quyền, người dùng được cấp một mã do Google tạo và được chuyển hướng đến trang web của nhà phát triển. Trang web này phải giải thích cho người dùng cách nhập mã vào thiết bị của họ để hoàn tất quá trình uỷ quyền.

Chế độ phát triển

Bạn chỉ nên sử dụng chế độ này trong quá trình phát triển ban đầu của ứng dụng.

Như ở chế độ Tự động phát hiện, ứng dụng của bạn phải khởi chạy trình duyệt và người dùng phải cho phép bạn. Tuy nhiên, thay vì tạo một trang web cho URL gọi lại, bạn có thể đặt giá trị của thông số oauth_callback thành "oob" (ngoài băng tần).

Trong trường hợp đó, sau khi người dùng cho phép bạn yêu cầu, Google sẽ chuyển họ đến trang Tài khoản Google có hiển thị số xác minh (xem ví dụ).

Người dùng phải quay lại ứng dụng của bạn và nhập số xác minh thì bạn mới có thể yêu cầu OAuthGetAccessToken.

Thông tin thêm về OAuth

Để biết thông tin chi tiết về việc triển khai OAuth của Google, bao gồm cách đăng ký ứng dụng và tạo các tham số OAuth cần thiết, hãy xem các tài nguyên bổ sung sau:

Trở lại đầu trang

Sử dụng AuthSub để ủy quyền

AuthSub là API uỷ quyền độc quyền của Google, thay thế cho OAuth cho hầu hết các API của Google. Bạn nên tránh sử dụng AuthSub nếu có thể. Nếu đã có ứng dụng dùng AuthSub, bạn nên chuyển sang OAuth hoặc giao thức kết hợp.

Quy trình uỷ quyền AuthSub

Việc uỷ quyền bằng AuthSub bao gồm một chuỗi tương tác giữa ba thực thể: ứng dụng web, các dịch vụ của Google và người dùng. Sơ đồ này minh hoạ trình tự:

Quy trình uỷ quyền

  1. Khi ứng dụng web cần truy cập dịch vụ Google của người dùng, ứng dụng đó sẽ thực hiện lệnh gọi AuthSub đến dịch vụ Proxy ủy quyền của Google.
  2. Dịch vụ Cấp phép phản hồi bằng cách phân phát trang Yêu cầu truy cập. Trang do Google quản lý sẽ nhắc người dùng cấp/từ chối quyền truy cập vào dịch vụ của Google. Người dùng có thể được yêu cầu đăng nhập vào tài khoản trước tiên.
  3. Người dùng quyết định việc cấp hay từ chối quyền truy cập vào ứng dụng web. Nếu người dùng từ chối quyền truy cập, họ sẽ được chuyển hướng đến một trang Google thay vì quay lại ứng dụng web.
  4. Nếu người dùng cấp quyền truy cập, thì dịch vụ Cấp phép sẽ chuyển hướng người dùng đó trở lại ứng dụng web. Lệnh chuyển hướng chứa một mã thông báo uỷ quyền tốt cho một mục đích sử dụng; nó có thể được trao đổi để lấy mã thông báo dài hạn.
  5. Ứng dụng web sẽ liên hệ với dịch vụ của Google bằng yêu cầu, sử dụng mã thông báo uỷ quyền để làm tác nhân cho người dùng.
  6. Nếu nhận ra mã thông báo, dịch vụ của Google sẽ cung cấp dữ liệu được yêu cầu.

Làm việc với AuthSub

Việc kết hợp AuthSub vào ứng dụng web của bạn yêu cầu những công việc sau:

  1. Quyết định có đăng ký ứng dụng web của bạn hay không.

    Các ứng dụng web đã đăng ký có lợi thế để được Google công nhận; cảnh báo tiêu chuẩn hiển thị cho người dùng trên trang đăng nhập của Google được sửa đổi hoặc bị bỏ qua. Ngoài ra, các ứng dụng web đã đăng ký được xác định bằng tên mô tả thay vì chỉ URL gọi. Xin lưu ý rằng một số dịch vụ của Google chỉ cho phép truy cập hạn chế vào các ứng dụng web chưa được đăng ký. Nếu bạn chọn đăng ký, hãy sử dụng quy trình đăng ký tự động này.

    Nếu đăng ký, bạn cũng có thể cung cấp chứng chỉ bảo mật và khóa. Những ứng dụng web đã đăng ký có chứng chỉ trong hồ sơ có thể lấy mã thông báo an toàn để sử dụng khi yêu cầu dữ liệu từ một dịch vụ của Google. (Họ cũng có thể dùng mã thông báo không an toàn nếu cần.)

  2. Quyết định loại mã thông báo cần sử dụng và cách quản lý các mã thông báo đó.

    Mã thông báo uỷ quyền nhận được từ Google sẽ được dùng cho tất cả các lượt tương tác trong tương lai với dịch vụ Google được chỉ định cho người dùng đó. Loại mã thông báo mà bạn chọn sử dụng (sử dụng một lần hoặc phiên) phụ thuộc vào loại tương tác mà ứng dụng web của bạn sẽ có với một dịch vụ của Google. Ví dụ: một mã thông báo dùng một lần có thể đủ nếu tương tác là sự kiện một lần hoặc sự kiện hiếm hoi.

    Nếu bạn chọn nhận mã thông báo phiên và sử dụng chúng thường xuyên để truy cập dịch vụ của Google, ứng dụng web của bạn sẽ cần quản lý bộ nhớ mã thông báo, bao gồm theo dõi người dùng và dịch vụ Google mà mã thông báo hợp lệ. Tài khoản Google không được thiết lập để quản lý một số lượng lớn mã thông báo và trên thực tế, hệ thống không cho phép sử dụng quá 10 mã thông báo hợp lệ (cho mỗi người dùng, mỗi ứng dụng web) cùng một lúc. Giới hạn này cho phép ứng dụng web nhận nhiều mã thông báo để đưa vào các dịch vụ khác nhau (nếu cần); không hỗ trợ lấy mã thông báo mới mỗi khi ứng dụng web cần truy cập vào một dịch vụ của Google. Nếu bạn quyết định lưu trữ mã thông báo phiên, mã thông báo phải được xử lý an toàn như mọi thông tin nhạy cảm khác được lưu trữ trên máy chủ.

    Ngoài ra, bạn có thể chọn thường xuyên nhận mã thông báo mới miễn là bạn thiết lập cơ chế thu hồi mã thông báo. Ứng dụng của bạn cần thu hồi mã thông báo hiện có trước khi yêu cầu một mã khác. Trong trường hợp này, người dùng sẽ được yêu cầu đăng nhập và cấp quyền truy cập mỗi khi họ yêu cầu một mã thông báo mới.

  3. Xác định phạm vi mà dịch vụ Google cần truy cập.

    Mỗi dịch vụ của Google sẽ xác định mức độ và loại quyền truy cập mà dịch vụ đó sẽ cho phép. Quyền truy cập này được biểu thị dưới dạng giá trị phạm vi. Phạm vi của một dịch vụ có thể là một URL đơn giản xác định toàn bộ dịch vụ hoặc có thể chỉ định quyền truy cập hạn chế hơn. Một số dịch vụ hạn chế nghiêm ngặt quyền truy cập, chẳng hạn như cho phép truy cập chỉ đọc vào thông tin có giới hạn. Để biết các phạm vi được phép đối với dịch vụ của Google mà bạn muốn truy cập, hãy tham khảo tài liệu về dịch vụ đó. Bạn nên yêu cầu mã thông báo có phạm vi chặt chẽ nhất có thể. Ví dụ: nếu cố gắng truy cập vào tính năng nguồn cấp dữ liệu Atom của Gmail, sử dụng phạm vi "http://www.google.com/calendar/feeds/", không phải "http://www.google.com/calendar/". Các dịch vụ của Google hạn chế hơn nhiều với các yêu cầu có phạm vi lớn.

  4. Thiết lập cơ chế yêu cầu và nhận mã thông báo uỷ quyền.

    Cơ chế này phải tạo một lệnh gọi AuthSubRequest có định dạng hợp lệ, bao gồm cả việc chỉ định các giá trị URL tiếp theophạm vi thích hợp (xác định ở bước 3). Nếu bạn đang sử dụng mã thông báo bảo mật và/hoặc đang quản lý mã thông báo phiên, thì yêu cầu này cũng phải bao gồm giá trị cho các biến này.

    URL tiếp theo có thể bao gồm các tham số truy vấn. Ví dụ: khi hỗ trợ nhiều ngôn ngữ, hãy thêm tham số truy vấn xác định phiên bản ứng dụng web mà người dùng đang xem. Giá trị tiếp theohttp://www.yoursite.com/Retrievetoken?Lang=de sẽ dẫn đến lệnh chuyển hướng http://www.yoursite.com/Retrievetoken?Lang=de&token=DQAADKEDE. Việc phân tích mã thông báo và thông số Lang đảm bảo rằng người dùng được chuyển hướng trở lại đúng phiên bản của trang web.

    Trong một số trường hợp nhất định, việc sử dụng thông số hd có thể giúp đơn giản hóa trải nghiệm của người dùng khi họ được yêu cầu cấp quyền truy cập trên trang web của Tài khoản Google. Trong hầu hết trường hợp, quá trình này chỉ đơn giản là đăng nhập vào tài khoản của họ và chọn có cấp quyền truy cập hay không. Tuy nhiên, người dùng có nhiều Tài khoản Google (tài khoản Gmail thông thường và/hoặc một hoặc nhiều tài khoản được lưu trữ trong Google Apps) có thể cần phải thực hiện theo quy trình "đăng nhập toàn cục" bổ sung để xác định tài khoản mà họ muốn truy cập. Nếu ứng dụng của bạn được thiết kế cho một miền được quản lý cụ thể, bạn có thể loại bỏ các bước bổ sung này bằng cách sử dụng tham số này để xác định miền đó. Bạn cũng có thể sử dụng thông số hd nếu ứng dụng của bạn truy cập các dịch vụ không có sẵn trên các tài khoản được lưu trữ--đặt giá trị thành 'mặc định' sẽ chỉ giới hạn việc ủy quyền cho các tài khoản thông thường. Khi bạn đặt giá trị hd, Google sẽ tự động chọn đúng tài khoản để uỷ quyền.

    Cơ chế mã thông báo phải được trang bị để phân tích cú pháp lệnh chuyển hướng nhận được từ Google (chứa mã thông báo dùng một lần) và thực hiện hành động với thông báo đó. Vì mã thông báo uỷ quyền là dành riêng cho một người dùng nên ứng dụng của bạn phải có thể liên kết mã thông báo với người dùng. Lựa chọn ưu tiên là phát hành cookie cho người dùng trước khi yêu cầu mã thông báo. Sau đó, khi Google chuyển hướng người dùng quay lại trang web của bạn bằng một mã thông báo bổ sung, ứng dụng có thể đọc cookie và liên kết mã thông báo đó với thông tin nhận dạng người dùng chính xác.

  5. Thiết lập cơ chế để yêu cầu mã thông báo phiên và lưu trữ hoặc thu hồi chúng (nếu có).

    Tuỳ thuộc vào những quyết định quản lý mã thông báo mà bạn đã thực hiện ở bước 2, bạn có thể cần phải tạo các cơ chế để lấy và thu hồi mã thông báo phiên (AuthSubSessionTokenAuthSubRevocationToken). Để kiểm tra cơ chế thu hồi và phiên, hãy sử dụng AuthSubTokenInfo, để cho biết mã thông báo nhất định có hợp lệ hay không. Nếu lưu trữ mã thông báo, ứng dụng phải theo dõi cả mã nhận dạng người dùng và dịch vụ (phạm vi) có trong mã thông báo.

  6. Thiết lập cơ chế yêu cầu quyền truy cập vào một dịch vụ của Google.

    Hãy tham khảo tài liệu về dịch vụ của Google để biết thông tin về định dạng yêu cầu phù hợp. Tất cả yêu cầu đến một dịch vụ của Google phải có mã thông báo uỷ quyền hợp lệ. Nói chung, yêu cầu đến một dịch vụ của Google ở dạng HTTP GET (hoặc POST nếu viết dữ liệu mới), với mã thông báo được tham chiếu trong tiêu đề của yêu cầu.

    Tiêu đề của yêu cầu sẽ có dạng như sau:

    Authorization: AuthSub token="token"

    trong đó token là mã thông báo uỷ quyền, mục đích sử dụng một lần hoặc phiên nhận được từ Google theo yêu cầu AuthSub. Nếu bảo mật, mã thông báo phải đi kèm với chữ ký số. Hãy xem phần "Yêu cầu ký" để xem hướng dẫn và ví dụ.

    Ví dụ dưới đây minh hoạ tiêu đề của yêu cầu cho một cuộc gọi đến dịch vụ nguồn cấp dữ liệu Lịch Google. Yêu cầu này chứa mã thông báo không an toàn:

    GET /calendar/feeds/default/private/full HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    Authorization: AuthSub token="GD32CMCL25aZ-v____8B"
    User-Agent: Java/1.5.0_06
    Host: www.google.com
    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    Connection: keep-alive

Thông tin thêm về AuthSub

Để biết thông tin về AuthSub, bao gồm cả việc đăng ký ứng dụng của bạn với Google và giải thích chi tiết về việc trao đổi mã thông báo một lần để lấy mã thông báo phiên, hãy xem các tài nguyên bổ sung sau:

Trở lại đầu trang

Sử dụng ClientLogin để ủy quyền

ClientLogin là một API uỷ quyền độc quyền của Google, có sẵn để thay thế cho OAuth cho hầu hết các API của Google. Bạn nên tránh sử dụng ClientLogin nếu có thể. Nếu đã có ứng dụng dùng ClientLogin, thì bạn nên chuyển sang OAuth hoặc giao thức kết hợp.

Xác thực cho ứng dụng đã cài đặt: ClientLogin

ClientLogin cho phép người dùng của bạn đăng nhập vào Tài khoản Google của họ từ bên trong ứng dụng. Sau đó, ứng dụng sẽ liên hệ với Google bằng dữ liệu đăng nhập và yêu cầu quyền truy cập vào một API Dữ liệu của Google được chỉ định. Sau khi thông tin đăng nhập được xác thực thành công, Google sẽ trả về một mã thông báo. Ứng dụng này sẽ tham chiếu mỗi khi ứng dụng yêu cầu quyền truy cập vào tài khoản của người dùng, chẳng hạn như để lấy hoặc đăng dữ liệu. Mã thông báo này vẫn có hiệu lực trong một khoảng thời gian cố định, được xác định theo bất kỳ dịch vụ nào của Google mà bạn đang hợp tác.

Lưu ý: Thư viện ứng dụng API Dữ liệu của Google cung cấp các phương thức giúp bạn sử dụng ClientLogin trong các ứng dụng đã cài đặt của mình. Cụ thể, có các phương thức để lấy mã xác thực, xử lý các thử thách CAPTCHA, thu hồi mã xác thực để sử dụng sau này và gửi tiêu đề Authorization chính xác cho mọi yêu cầu. Nếu bạn đang làm việc với một trong các thư viện, hãy xem phần Sử dụng ClientLogin với Thư viện ứng dụng API dữ liệu của Google.

Quy trình uỷ quyền ClientLogin

Việc uỷ quyền bằng ClientLogin bao gồm một chuỗi tương tác giữa ba thực thể: ứng dụng đã cài đặt, các dịch vụ của Google và người dùng. Sơ đồ này minh hoạ trình tự:

Quy trình uỷ quyền

  1. Khi ứng dụng của bên thứ ba cần truy cập vào dịch vụ Google của người dùng, ứng dụng đó sẽ truy xuất tên đăng nhập và mật khẩu của người dùng.
  2. Sau đó, ứng dụng bên thứ ba sẽ thực hiện lệnh gọi ClientLogin đến dịch vụ Cấp phép của Google.
  3. Nếu cần phải xác minh thêm thì dịch vụ uỷ quyền của Google sẽ trả về phản hồi không thành công bằng mã thông báo CAPTCHA và thử thách dưới dạng URL của hình ảnh CAPTCHA.
  4. Nếu nhận được hình ảnh xác thực CAPTCHA, ứng dụng bên thứ ba sẽ hiển thị hình ảnh CAPTCHA cho người dùng và đề nghị câu trả lời của người dùng.
  5. Nếu được yêu cầu, người dùng gửi câu trả lời cho thử thách CAPTCHA.
  6. Ứng dụng bên thứ ba thực hiện lệnh gọi ClientLogin mới, lần này bao gồm câu trả lời và mã thông báo CAPTCHA (nhận được cùng với phản hồi lỗi).
  7. Khi đăng nhập thành công (có hoặc không có CAPTCHA), dịch vụ Cấp phép của Google sẽ trả về mã thông báo cho ứng dụng.
  8. Ứng dụng này liên hệ với dịch vụ của Google bằng yêu cầu truy cập dữ liệu, tham chiếu mã thông báo nhận được từ dịch vụ Uỷ quyền của Google.
  9. Nếu nhận ra mã thông báo, thì dịch vụ của Google sẽ cung cấp quyền truy cập vào dữ liệu mà bạn yêu cầu.

Sử dụng ClientLogin

Sử dụng giao diện này trong ứng dụng đã cài đặt của bạn để truy cập tài khoản Google của người dùng theo phương thức lập trình. Sau khi thu thập thông tin đăng nhập từ người dùng, hãy gọi ClientLogin để yêu cầu quyền truy cập vào tài khoản của người dùng. Sau khi thông tin đăng nhập được xác thực thành công, Google sẽ trả về một mã thông báo. Ứng dụng của bạn sẽ tham chiếu đến mã này mỗi khi ứng dụng yêu cầu quyền truy cập vào tài khoản của người dùng. Mã thông báo này vẫn có hiệu lực trong một khoảng thời gian cố định, được xác định theo bất kỳ dịch vụ nào của Google mà bạn đang hợp tác.

Việc kết hợp ClientLogin vào ứng dụng của bạn yêu cầu các tác vụ sau:

  1. Tạo một thành phần trên giao diện người dùng để thu thập dữ liệu đăng nhập của người dùng.

    Giao diện người dùng cần lấy tên người dùng (địa chỉ email bao gồm miền) và mật khẩu. Giao diện người dùng cũng có thể hiển thị hình ảnh CAPTCHA bằng cách sử dụng URL nhận được từ Google (nếu bắt buộc) và yêu cầu người dùng trả lời đúng. Lý tưởng nhất là giao diện người dùng của bạn sẽ có một đường liên kết đến trang đăng nhập của Tài khoản Google ("https://www.google.com/accounts/Login") trong trường hợp người dùng cần đăng ký một tài khoản mới hoặc duy trì một tài khoản khác.

  2. Viết mã để tạo một yêu cầu HTTPS POST ClientLogin có định dạng hợp lệ và truyền yêu cầu đó.

    Mã này cần có logic để xử lý thử thách CAPTCHA và bao gồm cả thông số logintokenlogincaptcha. Ứng dụng cũng có thể phát hiện khi người dùng bỏ qua thông tin bắt buộc (hoặc lặp lại dữ liệu không chính xác sau khi đăng nhập không thành công) và hiển thị lỗi mà không gửi yêu cầu không cần thiết.

  3. Xử lý các phản hồi của Google.

    Có bốn phản hồi cho một yêu cầu đăng nhập:

    • thành công (HTTP 200)
    • lỗi (HTTP 403) kèm theo mã lỗi giải thích
    • yêu cầu không hợp lệ, thường là do yêu cầu không đúng định dạng
    • không thực hiện được thử thách CAPTCHA

    Phản hồi thành công có chứa mã thông báo uỷ quyền có nhãn "Xác thực". Mã thông báo này phải được đưa vào tất cả yêu cầu tiếp theo tới dịch vụ của Google cho tài khoản này. Bạn nên bảo vệ mã thông báo uỷ quyền một cách chặt chẽ và không nên cấp cho bất kỳ ứng dụng nào khác, vì các mã này cho phép truy cập vào tài khoản của người dùng. Giới hạn về thời gian áp dụng cho mã thông báo sẽ phụ thuộc vào dịch vụ mà mã này đã cấp.

    Phản hồi lỗi bao gồm một hoặc nhiều mã lỗi và một URL kèm theo thông báo lỗi có thể hiển thị cho người dùng. Xin lưu ý rằng ClientLogin không phân biệt giữa lỗi do mật khẩu không chính xác hoặc mật khẩu do tên người dùng không nhận dạng được (ví dụ: nếu người dùng chưa đăng ký tài khoản). Ứng dụng của bạn cần xử lý tất cả thông báo lỗi có thể xảy ra khi thích hợp.

    Phản hồi lỗi kèm theo thử thách CAPTCHA có nghĩa là vì bất cứ lý do gì, Google đã quyết định rằng cần thực hiện thêm các biện pháp bảo mật. Phản hồi này đi kèm với một URL hình ảnh CAPTCHA và mã thông báo đại diện cho thử thách CAPTCHA cụ thể.

  4. Xử lý thử thách CAPTCHA từ Google.

    Để xử lý thử thách này, ứng dụng phải hiển thị hình ảnh CAPTCHA và yêu cầu người dùng trả lời. Để hiển thị hình ảnh CAPTCHA, hãy sử dụng giá trị của CaptchaUrl được trả về với phản hồi lỗi, đặt tiền tố bằng URL của Tài khoản Google: "http://www.google.com/accounts/". Sau khi người dùng cung cấp câu trả lời, ứng dụng sẽ gửi lại yêu cầu đăng nhập, lần này bao gồm mã thông báo CAPTCHA (logintoken) và câu trả lời của người dùng (logincaptcha). Google xác thực câu trả lời của người dùng trước khi cấp quyền truy cập vào tài khoản.

    Có một lựa chọn thay thế cho các nhà phát triển không muốn quản lý quy trình nhận và truyền phản hồi CAPTCHA của người dùng. Để đối phó với thách thức CAPTCHA, ứng dụng có thể hướng người dùng đến trang được lưu trữ trên Google: "https://www.google.com/accounts/DisplayOFFSET". Sau khi người dùng phản hồi thành công thử thách này, máy chủ của Google sẽ tin tưởng máy tính đang được sử dụng. Sau đó, ứng dụng có thể gửi lại yêu cầu đăng nhập ban đầu để lấy mã cấp phép.

  5. Lưu ý: Google không xác thực nỗ lực đăng nhập trước khi thực hiện xác thực CAPTCHA. Điều này có nghĩa là nỗ lực đăng nhập có thể không thành công ngay cả sau thử thách CAPTCHA.

* CAPTCHA là nhãn hiệu của Carnegie Mellon College

Trở lại đầu trang

Xác thực tiện ích

Proxy OAuth

Nếu đang xây dựng tiện ích bằng cách sử dụng API tiện ích chuẩn, bạn có thể tận dụng một tính năng của nền tảng tiện ích được gọi là Proxy Proxy để truy cập Google Data API. OAuth (được mô tả ở trên) là tiêu chuẩn xác thực cho phép người dùng truy cập vào dữ liệu riêng tư của họ trong dịch vụ lưu trữ tiện ích như iGoogle, Sidewiki, hoặc Orkut, hoặc chia sẻ dữ liệu của họ với một trang web hay tiện ích khác. Proxy OAuth được thiết kế để giúp các nhà phát triển tiện ích dễ dàng hơn bằng cách ẩn nhiều chi tiết xác thực của OAuth. Proxy dựa trên một dự án nguồn mở có tên Shindig, là cách triển khai thông số kỹ thuật của tiện ích.

Lưu ý: Proxy OAuth chỉ được hỗ trợ cho các tiện ích sử dụng API gadgets.* và chạy trong các vùng chứa OpenSocial. Không hỗ trợ cho API tiện ích cũ.

Quy trình xác thực

Tiện ích của bạn phải có được mã thông báo OAuth trước khi có thể truy cập vào dữ liệu của người dùng. Proxy OAuth quản lý quy trình xác thực cho bạn. Khi người dùng cài đặt tiện ích của bạn lần đầu tiên, quy trình sau đây sẽ diễn ra:

  1. Tiện ích của bạn tải lần đầu tiên và cố gắng truy cập vào dữ liệu của người dùng bằng một trong các API Dữ liệu của Google.
  2. Yêu cầu không thành công vì người dùng chưa cấp quyền truy cập. Đối tượng phản hồi chứa URL (trong response.oauthApprovalUrl) cho trang phê duyệt OAuth. Tiện ích của bạn phải cung cấp phương thức để khởi chạy một cửa sổ mới với URL đó.
  3. Trên trang phê duyệt, người dùng chọn cấp hoặc từ chối quyền truy cập vào tiện ích của bạn. Nếu thành công, người dùng sẽ được đưa đến trang oauth_callback mà bạn chỉ định. Để có trải nghiệm người dùng tốt nhất, hãy sử dụng http://oauth.gmodules.com/gadgets/oauthcallback.
  4. Tiếp theo, người dùng đóng cửa sổ bật lên. Để thông báo cho tiện ích của mình rằng người dùng đã phê duyệt, bạn có thể sử dụng trình xử lý bật lên để phát hiện việc đóng cửa sổ phê duyệt. Ngoài ra, tiện ích của bạn có thể hiển thị một liên kết (ví dụ: "Tôi đã phê duyệt quyền truy cập") để người dùng nhấp vào sau khi cửa sổ này đóng lại.
  5. Tiện ích của bạn cố gắng truy cập Google Data API lần thứ hai bằng cách yêu cầu lại dữ liệu của người dùng. Bạn đã thử xong.
  6. Tiện ích của bạn được xác thực và có thể bắt đầu hoạt động bình thường.

Thiết lập tiện ích

Để truy cập một hoặc nhiều API Dữ liệu của Google, trước tiên bạn cần yêu cầu tiện ích của bạn sử dụng OAuth làm phương thức xác thực. Thêm một thành phần <OAuth> vào phần <ModulePrefs> trong XML của tiện ích:

<ModulePrefs>
...
<OAuth>
  <Service name="google">
    <Access url="https://www.google.com/accounts/OAuthGetAccessToken" method="GET" />
    <Request url="https://www.google.com/accounts/OAuthGetRequestToken?
                  scope=http://www.blogger.com/feeds/%20http://www.google.com/calendar/feeds/" method="GET" />
    <Authorization url="https://www.google.com/accounts/OAuthAuthorizeToken?
                        oauth_callback=http://oauth.gmodules.com/gadgets/oauthcallback" />
  </Service>
</OAuth>
...
</ModulePrefs>

Trong mục này, chỉ thay đổi các thông số truy vấn sau:

scope
Tham số bắt buộc trong URL yêu cầu. Tiện ích của bạn có thể truy cập dữ liệu từ (các) scope được dùng trong thông số này. Trong ví dụ này, tiện ích có thể truy cập vào dữ liệu Blogger và Lịch. Một tiện ích có thể yêu cầu dữ liệu cho một phạm vi hoặc nhiều phạm vi, như trong ví dụ này.
oauth_callback
Một thông số không bắt buộc trong URL uỷ quyền. Trang phê duyệt OAuth chuyển hướng đến URL này sau khi người dùng đã phê duyệt quyền truy cập vào dữ liệu. Bạn nên đặt thông số này thành http://oauth.gmodules.com/gadgets/oauthcallback để cung cấp trải nghiệm người dùng tốt nhất khi người dùng cài đặt tiện ích của bạn. Trang đó cung cấp một đoạn mã JavaScript tự động đóng cửa sổ bật lên. Ngoài ra, bạn có thể đặt thông số này để trỏ đến trang "được phê duyệt" của riêng mình hoặc bạn chỉ cần để trống thông số.

Truy cập vào nguồn cấp dữ liệu Google Data API đã xác thực

Sau khi tiện ích của bạn đã xác thực người dùng, việc truy cập API dữ liệu của Google trở nên đơn giản với thư viện ứng dụng JavaScript của Google Data API. Để biết thông tin về cách sử dụng thư viện trong Proxy OAuth, hãy xem phần Sử dụng Thư viện ứng dụng JavaScript.

Thông tin khác về Tiện ích

Để biết toàn bộ thông tin về cách tạo Tiện ích API dữ liệu của Google, bao gồm thông tin chi tiết về Proxy OAuth, bài viết về cách bắt đầu và thông số kỹ thuật của gadgets.*, hãy xem các tài nguyên bổ sung sau:

Trở lại đầu trang