OAuth 2.0 dành cho TV và ứng dụng thiết bị đầu vào hạn chế

2 phạm vi quan trọng.2 phạm vi quan trọng.0 quan trọng 2 phạm vi

Tài liệu này giải thích cách triển khai tính năng uỷ quyền OAuth 2.0 để truy cập vào các API của Google thông qua các ứng dụng chạy trên các thiết bị như TV, máy chơi trò chơi và máy in. Cụ thể hơn, quy trình này được thiết kế cho các thiết bị không có quyền truy cập vào trình duyệt hoặc bị hạn chế khả năng nhập.

OAuth 2.0 cho phép người dùng chia sẻ dữ liệu cụ thể với ứng dụng trong khi vẫn đảm bảo sự riêng tư cho tên người dùng, mật khẩu và các thông tin khác. Ví dụ: một ứng dụng TV có thể dùng OAuth 2.0 để lấy quyền chọn một tệp được lưu trữ trên Google Drive.

Vì các ứng dụng dùng quy trình này được phân phối đến các thiết bị riêng lẻ, nên hệ thống giả định rằng các ứng dụng đó không thể giữ bí mật. Chúng có thể truy cập các API của Google khi người dùng đang sử dụng ứng dụng hoặc khi ứng dụng đang chạy trong nền.

Lựa chọn thay thế

Nếu bạn đang viết ứng dụng cho một nền tảng như Android, iOS, macOS, Linux hoặc Windows (bao gồm cả Nền tảng Windows phổ quát) có quyền truy cập vào trình duyệt và các tính năng nhập đầy đủ, hãy sử dụng quy trình OAuth 2.0 cho ứng dụng dành cho thiết bị di động và máy tính. (Bạn nên sử dụng quy trình đó ngay cả khi ứng dụng của bạn là công cụ dòng lệnh không có giao diện đồ hoạ.)

Nếu bạn chỉ muốn đăng nhập người dùng bằng Tài khoản Google của họ và sử dụng mã thông báo mã nhận dạng JWT để lấy thông tin cơ bản về hồ sơ người dùng, hãy xem phần Đăng nhập trên TV và Thiết bị đầu vào hạn chế.

Điều kiện tiên quyết

Bật API cho dự án của bạn

Bất kỳ ứng dụng nào gọi API của Google đều cần bật các API đó trong API Console.

Cách bật API cho dự án:

  1. Open the API Library trong Google API Console.
  2. If prompted, select a project, or create a new one.
  3. API Library liệt kê tất cả các API có sẵn, được nhóm theo nhóm sản phẩm và mức độ phổ biến. Nếu API mà bạn muốn bật không xuất hiện trong danh sách, hãy sử dụng chức năng tìm kiếm để tìm API đó hoặc nhấp vào Xem tất cả trong nhóm sản phẩm chứa API đó.
  4. Chọn API bạn muốn bật, sau đó nhấp vào nút Bật.
  5. If prompted, enable billing.
  6. If prompted, read and accept the API's Terms of Service.

Tạo thông tin xác thực uỷ quyền

Mọi ứng dụng dùng OAuth 2.0 để truy cập vào API của Google đều phải có thông tin xác thực uỷ quyền giúp xác định ứng dụng đó với máy chủ OAuth 2.0 của Google. Các bước sau giải thích cách tạo thông tin xác thực cho dự án của bạn. Sau đó, ứng dụng của bạn có thể sử dụng thông tin xác thực để truy cập vào các API mà bạn đã bật cho dự án đó.

  1. Go to the Credentials page.
  2. Nhấp vào Tạo thông tin xác thực > Mã ứng dụng khách OAuth.
  3. Chọn loại ứng dụng TV và Thiết bị đầu vào giới hạn.
  4. Đặt tên cho ứng dụng khách OAuth 2.0 rồi nhấp vào Create (Tạo).

Xác định phạm vi truy cập

Phạm vi cho phép ứng dụng của bạn chỉ yêu cầu quyền truy cập vào những tài nguyên mà ứng dụng đó cần, đồng thời cho phép người dùng kiểm soát lượng quyền truy cập mà họ cấp cho ứng dụng của bạn. Do đó, có thể có mối quan hệ nghịch đảo giữa số lượng phạm vi được yêu cầu và khả năng có được sự đồng ý của người dùng.

Trước khi bắt đầu triển khai tính năng uỷ quyền OAuth 2.0, bạn nên xác định những phạm vi mà ứng dụng sẽ cần quyền truy cập.

Xem danh sách Phạm vi được phép cho các ứng dụng hoặc thiết bị đã cài đặt.

Nhận mã truy cập OAuth 2.0

Mặc dù ứng dụng của bạn chạy trên một thiết bị có khả năng đầu vào hạn chế, nhưng người dùng phải có quyền truy cập riêng vào một thiết bị có tính năng đầu vào phong phú hơn để hoàn tất quy trình uỷ quyền này. Quy trình này có các bước sau:

  1. Ứng dụng của bạn gửi một yêu cầu đến máy chủ uỷ quyền của Google để xác định các phạm vi mà ứng dụng sẽ yêu cầu cấp quyền truy cập.
  2. Máy chủ phản hồi bằng một số thông tin dùng trong các bước tiếp theo, chẳng hạn như mã thiết bị và mã người dùng.
  3. Bạn sẽ hiển thị thông tin mà người dùng có thể nhập trên một thiết bị riêng để cho phép ứng dụng của bạn.
  4. Ứng dụng của bạn bắt đầu thăm dò máy chủ uỷ quyền của Google để xác định xem người dùng đã uỷ quyền cho ứng dụng của bạn hay chưa.
  5. Người dùng chuyển sang một thiết bị có tính năng nhập liệu phong phú hơn, chạy một trình duyệt web, chuyển đến URL ở bước 3 rồi nhập một mã cũng hiển thị ở bước 3. Sau đó, người dùng có thể cấp (hoặc từ chối) quyền truy cập vào ứng dụng của bạn.
  6. Phản hồi tiếp theo cho yêu cầu thăm dò ý kiến chứa các mã thông báo mà ứng dụng của bạn cần để uỷ quyền cho yêu cầu thay mặt người dùng. (Nếu người dùng từ chối truy cập vào ứng dụng của bạn, thì phản hồi sẽ không chứa mã thông báo.)

Hình ảnh dưới đây minh hoạ quá trình này:

Người dùng đăng nhập trên một thiết bị riêng có trình duyệt

Phần sau đây sẽ giải thích chi tiết những bước này. Dựa vào phạm vi các tính năng và môi trường thời gian chạy mà thiết bị có thể có, các ví dụ minh hoạ trong tài liệu này sử dụng tiện ích dòng lệnh curl. Các ví dụ này phải dễ chuyển sang nhiều ngôn ngữ và thời gian chạy.

Bước 1: Yêu cầu mã thiết bị và mã người dùng

Trong bước này, thiết bị của bạn gửi một yêu cầu POST HTTP tới máy chủ uỷ quyền của Google tại https://oauth2.googleapis.com/device/code. Máy chủ này sẽ xác định ứng dụng cũng như phạm vi truy cập mà ứng dụng của bạn muốn truy cập thay cho người dùng. Bạn nên truy xuất URL này từ tài liệu Khám phá bằng cách sử dụng giá trị siêu dữ liệu device_authorization_endpoint. Hãy cung cấp các tham số yêu cầu HTTP sau đây:

Thông số
client_id Bắt buộc

Mã ứng dụng khách của ứng dụng. Bạn có thể tìm thấy giá trị này trong Credentials page API Console.

scope Bắt buộc

Danh sách các phạm vi được phân tách bằng dấu cách giúp xác định những tài nguyên mà ứng dụng của bạn có thể thay người dùng truy cập. Những giá trị này thông báo cho màn hình xin phép mà Google hiển thị cho người dùng. Xem danh sách Phạm vi được phép cho các ứng dụng hoặc thiết bị đã cài đặt.

Phạm vi cho phép ứng dụng của bạn chỉ yêu cầu quyền truy cập vào những tài nguyên mà ứng dụng cần, đồng thời cho phép người dùng kiểm soát lượng quyền truy cập mà họ cấp cho ứng dụng của bạn. Do đó, có mối quan hệ nghịch đảo giữa số lượng phạm vi được yêu cầu và khả năng nhận được sự đồng ý của người dùng.

Ví dụ

Đoạn mã sau đây cho thấy một yêu cầu mẫu:

POST /device/code HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=client_id&scope=email%20profile

Ví dụ sau đây cho thấy lệnh curl để gửi cùng một yêu cầu:

curl -d "client_id=client_id&scope=email%20profile" \
     https://oauth2.googleapis.com/device/code

Bước 2: Xử lý phản hồi của máy chủ uỷ quyền

Máy chủ uỷ quyền sẽ trả về một trong các phản hồi sau:

Phản hồi thành công

Nếu yêu cầu hợp lệ, phản hồi của bạn sẽ là một đối tượng JSON chứa các thuộc tính sau:

Thuộc tính
device_code Giá trị mà Google chỉ định duy nhất để nhận dạng thiết bị chạy ứng dụng yêu cầu uỷ quyền. Người dùng sẽ cấp phép cho thiết bị đó từ một thiết bị khác có chức năng nhập liệu phong phú hơn. Ví dụ: người dùng có thể sử dụng máy tính xách tay hoặc điện thoại di động để uỷ quyền cho một ứng dụng chạy trên TV. Trong trường hợp này, device_code sẽ xác định TV.

Mã này cho phép thiết bị chạy ứng dụng xác định một cách an toàn xem người dùng đã cấp hay từ chối quyền truy cập.

expires_in Thời lượng, tính bằng giây, mà device_codeuser_code hợp lệ. Nếu tại thời điểm đó, người dùng không hoàn tất quy trình uỷ quyền và thiết bị của bạn cũng không thăm dò ý kiến để truy xuất thông tin về quyết định của người dùng, thì bạn có thể phải bắt đầu lại quá trình này từ bước 1.
interval Khoảng thời gian (tính bằng giây) mà thiết bị của bạn phải chờ giữa các yêu cầu thăm dò ý kiến. Ví dụ: nếu giá trị là 5, thì thiết bị của bạn nên gửi một yêu cầu thăm dò ý kiến đến máy chủ uỷ quyền của Google 5 giây một lần. Hãy xem bước 3 để biết thêm thông tin.
user_code Một giá trị có phân biệt chữ hoa chữ thường giúp xác định cho Google các phạm vi mà ứng dụng đang yêu cầu quyền truy cập. Giao diện người dùng của bạn sẽ hướng dẫn người dùng nhập giá trị này trên một thiết bị riêng có khả năng nhập liệu phong phú hơn. Sau đó, Google sẽ dùng giá trị này để cho thấy đúng bộ phạm vi khi nhắc người dùng cấp quyền truy cập vào ứng dụng của bạn.
verification_url Một URL mà người dùng phải truy cập trên một thiết bị riêng để nhập user_code và cấp hoặc từ chối quyền truy cập vào ứng dụng của bạn. Giao diện người dùng của bạn cũng sẽ hiển thị giá trị này.

Đoạn mã sau đây cho thấy một câu trả lời mẫu:

{
  "device_code": "4/4-GMMhmHCXhWEzkobqIHGG_EnNYYsAkukHspeYUk9E8",
  "user_code": "GQVQ-JKEC",
  "verification_url": "https://www.google.com/device",
  "expires_in": 1800,
  "interval": 5
}

Phản hồi vượt quá hạn mức

Nếu các yêu cầu mã thiết bị của bạn vượt quá hạn mức được liên kết với mã ứng dụng khách của bạn, bạn sẽ nhận được phản hồi 403 chứa lỗi sau:

{
  "error_code": "rate_limit_exceeded"
}

Trong trường hợp đó, hãy sử dụng chiến lược thời gian đợi để giảm tỷ lệ yêu cầu.

Bước 3: Hiển thị mã người dùng

Hiển thị cho người dùng verification_urluser_code thu được ở bước 2. Cả hai giá trị đều có thể chứa bất kỳ ký tự nào in được từ bộ ký tự US- ASCII. Nội dung mà bạn hiển thị cho người dùng phải hướng dẫn người dùng chuyển đến verification_url trên một thiết bị riêng rồi nhập user_code.

Hãy thiết kế giao diện người dùng (UI) của bạn với các quy tắc sau:

  • user_code
    • user_code phải hiển thị trong một trường có thể xử lý 15 ký tự có kích thước "W". Nói cách khác, nếu bạn có thể hiển thị mã WWWWWWWWWWWWWWW chính xác, giao diện người dùng của bạn sẽ hợp lệ và bạn nên sử dụng giá trị chuỗi đó khi kiểm thử cách user_code hiển thị trong giao diện người dùng.
    • user_code có phân biệt chữ hoa chữ thường và không được sửa đổi theo bất kỳ cách nào, chẳng hạn như thay đổi cách viết hoa hoặc chèn các ký tự định dạng khác.
  • verification_url
    • Không gian nơi bạn hiển thị verification_url phải đủ rộng để xử lý một chuỗi URL dài 40 ký tự.
    • Bạn không nên sửa đổi verification_url dưới bất kỳ hình thức nào, ngoại trừ việc tuỳ ý xoá giao thức hiển thị. Nếu bạn dự định loại bỏ giao thức (ví dụ: https://) khỏi URL vì lý do hiển thị, hãy đảm bảo ứng dụng của bạn có thể xử lý cả biến thể httphttps.

Bước 4: Thăm dò máy chủ uỷ quyền của Google

Vì người dùng sẽ sử dụng một thiết bị riêng để chuyển đến verification_url và cấp (hoặc từ chối) quyền truy cập, nên thiết bị yêu cầu sẽ không tự động thông báo khi người dùng phản hồi yêu cầu truy cập. Do đó, thiết bị yêu cầu cần thăm dò máy chủ uỷ quyền của Google để xác định thời điểm người dùng phản hồi yêu cầu.

Thiết bị yêu cầu sẽ tiếp tục gửi các yêu cầu thăm dò ý kiến cho đến khi nhận được phản hồi cho biết người dùng đã phản hồi yêu cầu truy cập hoặc cho đến khi device_codeuser_code nhận được ở bước 2 đã hết hạn. interval được trả về ở bước 2 cho biết khoảng thời gian (tính bằng giây) để chờ giữa các yêu cầu.

URL của điểm cuối cần thăm dò ý kiến là https://oauth2.googleapis.com/token. Yêu cầu thăm dò ý kiến chứa các thông số sau:

Thông số
client_id Mã ứng dụng khách của ứng dụng. Bạn có thể tìm thấy giá trị này trong Credentials page API Console.
client_secret Mật khẩu ứng dụng khách cho client_id được cung cấp. Bạn có thể tìm thấy giá trị này trong Credentials page API Console.
device_code device_code được máy chủ uỷ quyền trả về trong bước 2.
grant_type Đặt giá trị này thành urn:ietf:params:oauth:grant-type:device_code.

Ví dụ

Đoạn mã sau đây cho thấy một yêu cầu mẫu:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=client_id&
client_secret=client_secret&
device_code=device_code&
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code

Ví dụ sau đây cho thấy lệnh curl để gửi cùng một yêu cầu:

curl -d "client_id=client_id&client_secret=client_secret& \
         device_code=device_code& \
         grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code" \
         -H "Content-Type: application/x-www-form-urlencoded" \
         https://oauth2.googleapis.com/token

Bước 5: Người dùng phản hồi yêu cầu truy cập

Hình ảnh sau đây cho thấy một trang tương tự như trang mà người dùng nhìn thấy khi họ chuyển đến verification_url mà bạn hiển thị ở bước 3:

Kết nối thiết bị bằng cách nhập mã

Sau khi nhập user_code, và đăng nhập vào Google (nếu chưa đăng nhập), người dùng sẽ thấy màn hình xin phép như minh hoạ bên dưới:

Ví dụ về màn hình xin phép cho một ứng dụng thiết bị

Bước 6: Xử lý phản hồi cho yêu cầu thăm dò ý kiến

Máy chủ uỷ quyền của Google phản hồi từng yêu cầu thăm dò ý kiến bằng một trong các phản hồi sau:

Đã nhận được lợi ích mới

Nếu người dùng đã cấp quyền truy cập vào thiết bị (bằng cách nhấp vào Allow trên màn hình đồng ý), thì phản hồi sẽ chứa một mã truy cập và một mã làm mới. Các mã thông báo này cho phép thiết bị của bạn thay mặt người dùng truy cập vào các API của Google. (Thuộc tính scope trong phản hồi xác định những API mà thiết bị có thể truy cập.)

Trong trường hợp này, phản hồi của API chứa các trường sau:

Các trường
access_token Mã thông báo mà ứng dụng của bạn gửi để cho phép một yêu cầu API của Google.
expires_in Thời gian tồn tại còn lại của mã truy cập tính bằng giây.
refresh_token Mã thông báo mà bạn có thể dùng để lấy mã truy cập mới. Mã làm mới sẽ có hiệu lực cho đến khi người dùng thu hồi quyền truy cập. Lưu ý rằng mã làm mới luôn được trả về cho các thiết bị.
scope Phạm vi truy cập do access_token cấp được biểu thị dưới dạng danh sách các chuỗi được phân tách bằng dấu cách và phân biệt chữ hoa chữ thường.
token_type Loại mã thông báo được trả về. Hiện tại, giá trị của trường này luôn được đặt thành Bearer.

Đoạn mã sau đây cho thấy một câu trả lời mẫu:

{
  "access_token": "1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in": 3920,
  "scope": "openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email",
  "token_type": "Bearer",
  "refresh_token": "1/xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI"
}

Mã truy cập có thời gian tồn tại giới hạn. Nếu cần quyền truy cập vào một API trong một khoảng thời gian dài, thì ứng dụng của bạn có thể sử dụng mã làm mới để lấy mã truy cập mới. Nếu cần loại quyền truy cập này, thì ứng dụng của bạn nên lưu trữ mã làm mới để sử dụng sau này.

Quyền truy cập bị từ chối

Nếu người dùng từ chối cấp quyền truy cập vào thiết bị, thì phản hồi của máy chủ sẽ có mã trạng thái phản hồi HTTP 403 (Forbidden). Phản hồi có lỗi sau:

{
  "error": "access_denied",
  "error_description": "Forbidden"
}

Đang chờ uỷ quyền

Nếu người dùng chưa hoàn tất quy trình uỷ quyền, thì máy chủ sẽ trả về mã trạng thái phản hồi HTTP 428 (Precondition Required). Phản hồi có lỗi sau:

{
  "error": "authorization_pending",
  "error_description": "Precondition Required"
}

Thăm dò ý kiến quá thường xuyên

Nếu thiết bị gửi các yêu cầu thăm dò ý kiến quá thường xuyên, thì máy chủ sẽ trả về một mã trạng thái phản hồi HTTP 403 (Forbidden). Phản hồi có lỗi sau:

{
  "error": "slow_down",
  "error_description": "Forbidden"
}

Lỗi khác

Máy chủ uỷ quyền cũng sẽ trả về lỗi nếu yêu cầu thăm dò ý kiến thiếu bất kỳ tham số bắt buộc nào hoặc có giá trị thông số không chính xác. Những yêu cầu này thường có mã trạng thái phản hồi HTTP 400 (Bad Request) hoặc 401 (Unauthorized). Những lỗi đó bao gồm:

Lỗi Mã trạng thái HTTP Nội dung mô tả
admin_policy_enforced 400 Tài khoản Google không thể cấp quyền cho một hoặc nhiều phạm vi theo yêu cầu do chính sách của quản trị viên Google Workspace của tài khoản đó. Hãy xem bài viết trợ giúp dành cho Quản trị viên Google Workspace Kiểm soát những ứng dụng nội bộ và ứng dụng bên thứ ba nào truy cập vào dữ liệu trong Google Workspace để biết thêm thông tin về cách quản trị viên có thể hạn chế quyền truy cập vào các phạm vi cho đến khi quyền truy cập được cấp rõ ràng cho mã ứng dụng khách OAuth của bạn.
invalid_client 401

Không tìm thấy ứng dụng OAuth. Ví dụ: lỗi này xảy ra nếu giá trị tham số client_id không hợp lệ.

Loại ứng dụng OAuth không chính xác. Đảm bảo rằng loại ứng dụng cho mã ứng dụng khách được đặt thành TV và Thiết bị đầu vào hạn chế.

invalid_grant 400 Giá trị tham số code không hợp lệ, đã được xác nhận quyền sở hữu hoặc không thể phân tích cú pháp.
unsupported_grant_type 400 Giá trị thông số grant_type không hợp lệ.
org_internal 403 Mã ứng dụng khách OAuth trong yêu cầu là một phần của dự án giới hạn quyền truy cập vào Tài khoản Google trong một tổ chức cụ thể trên Google Cloud. Xác nhận cấu hình loại người dùng cho ứng dụng OAuth.

Gọi các API của Google

Sau khi ứng dụng của bạn nhận được mã truy cập, bạn có thể sử dụng mã thông báo này để thay mặt một tài khoản người dùng cụ thể thực hiện lệnh gọi đến API của Google nếu(các) phạm vi truy cập mà API yêu cầu đã được cấp. Để thực hiện việc này, hãy đưa mã truy cập vào một yêu cầu tới API bằng cách cung cấp tham số truy vấn access_token hoặc giá trị tiêu đề HTTP Authorization Bearer. Khi có thể, bạn nên sử dụng tiêu đề HTTP vì các chuỗi truy vấn thường xuất hiện trong nhật ký máy chủ. Trong hầu hết các trường hợp, bạn có thể sử dụng thư viện ứng dụng để thiết lập lệnh gọi đến API Google (chẳng hạn như khi gọi API Tệp Drive).

Bạn có thể dùng thử tất cả các API của Google và xem phạm vi của các API đó tại API OAuth 2.0.

Ví dụ về HTTP GET

Lệnh gọi đến điểm cuối drive.files (API Drive Files) bằng tiêu đề HTTP Authorization: Bearer có thể có dạng như sau. Xin lưu ý rằng bạn cần chỉ định mã truy cập của riêng mình:

GET /drive/v2/files HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer access_token

Dưới đây là một lệnh gọi tới cùng một API cho người dùng đã xác thực bằng cách sử dụng tham số chuỗi truy vấn access_token:

GET https://www.googleapis.com/drive/v2/files?access_token=access_token

Ví dụ về curl

Bạn có thể kiểm thử các lệnh này bằng ứng dụng dòng lệnh curl. Dưới đây là ví dụ sử dụng tuỳ chọn tiêu đề HTTP (ưu tiên):

curl -H "Authorization: Bearer access_token" https://www.googleapis.com/drive/v2/files

Hoặc lựa chọn khác là tuỳ chọn tham số chuỗi truy vấn:

curl https://www.googleapis.com/drive/v2/files?access_token=access_token

Làm mới mã truy cập

Mã thông báo truy cập sẽ hết hạn theo định kỳ và trở thành thông tin xác thực không hợp lệ cho một yêu cầu API liên quan. Bạn có thể làm mới mã truy cập mà không cần nhắc người dùng cấp quyền (bao gồm cả khi người dùng không có mặt) nếu bạn đã yêu cầu quyền truy cập ngoại tuyến vào các phạm vi được liên kết với mã thông báo.

Để làm mới mã truy cập, ứng dụng của bạn sẽ gửi một yêu cầu HTTPS POST đến máy chủ uỷ quyền của Google (https://oauth2.googleapis.com/token). Yêu cầu này bao gồm các tham số sau:

Các trường
client_id Mã ứng dụng khách lấy được từ API Console.
client_secret Mật khẩu ứng dụng khách lấy từ API Console.
grant_type Như đã xác định trong thông số kỹ thuật OAuth 2.0, giá trị của trường này phải được đặt thành refresh_token.
refresh_token Mã làm mới được trả về từ quá trình trao đổi mã uỷ quyền.

Đoạn mã sau đây cho thấy một yêu cầu mẫu:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=your_client_id&
client_secret=your_client_secret&
refresh_token=refresh_token&
grant_type=refresh_token

Miễn là người dùng chưa thu hồi quyền truy cập đã cấp cho ứng dụng, máy chủ mã thông báo sẽ trả về đối tượng JSON chứa mã truy cập mới. Đoạn mã sau đây cho thấy một phản hồi mẫu:

{
  "access_token": "1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in": 3920,
  "scope": "https://www.googleapis.com/auth/drive.metadata.readonly",
  "token_type": "Bearer"
}

Xin lưu ý rằng có giới hạn về số lượng mã thông báo làm mới sẽ được phát hành; một giới hạn cho mỗi tổ hợp ứng dụng/người dùng và một giới hạn khác cho mỗi người dùng trên tất cả các ứng dụng. Bạn nên lưu mã thông báo làm mới trong bộ nhớ dài hạn và tiếp tục sử dụng các mã này cho đến khi chúng vẫn hợp lệ. Nếu ứng dụng của bạn yêu cầu quá nhiều mã làm mới, thì ứng dụng có thể gặp phải các giới hạn này. Trong trường hợp đó, mã làm mới cũ hơn sẽ ngừng hoạt động.

Thu hồi mã thông báo

Trong một số trường hợp, người dùng có thể muốn thu hồi quyền truy cập đã cấp cho một ứng dụng. Người dùng có thể thu hồi quyền truy cập bằng cách truy cập vào phần Cài đặt tài khoản. Hãy xem phần Xoá quyền truy cập của trang web hoặc ứng dụng trong tài liệu hỗ trợ về Các trang web và ứng dụng của bên thứ ba có quyền truy cập vào tài khoản của bạn để biết thêm thông tin.

Ứng dụng cũng có thể thu hồi quyền truy cập đã cấp cho ứng dụng theo phương thức lập trình. Việc thu hồi có lập trình rất quan trọng trong những trường hợp người dùng huỷ đăng ký, xoá ứng dụng hoặc các tài nguyên API mà ứng dụng yêu cầu đã thay đổi đáng kể. Nói cách khác, một phần của quy trình xoá có thể bao gồm cả yêu cầu API để đảm bảo các quyền đã cấp trước đó cho ứng dụng sẽ bị xoá.

Để thu hồi mã thông báo theo phương thức lập trình, ứng dụng sẽ gửi yêu cầu tới https://oauth2.googleapis.com/revoke và đưa mã thông báo vào dưới dạng tham số:

curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \
        https://oauth2.googleapis.com/revoke?token={token}

Mã thông báo này có thể là mã truy cập hoặc mã làm mới. Nếu mã thông báo này là mã truy cập và có mã làm mới tương ứng, thì mã làm mới cũng sẽ bị thu hồi.

Nếu quy trình thu hồi được xử lý thành công, thì mã trạng thái HTTP của phản hồi sẽ là 200. Đối với các điều kiện lỗi, mã trạng thái HTTP 400 sẽ được trả về cùng với mã lỗi.

Phạm vi cho phép

Quy trình OAuth 2.0 dành cho thiết bị chỉ được hỗ trợ trong các phạm vi sau:

OpenID Connect, Đăng nhập bằng Google

  • email
  • openid
  • profile

API Drive

  • https://www.googleapis.com/auth/drive.appdata
  • https://www.googleapis.com/auth/drive.file

API YouTube

  • https://www.googleapis.com/auth/youtube
  • https://www.googleapis.com/auth/youtube.readonly