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

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Các mục đề xuất

Tài liệu này giải thích cách triển khai phương thức ủy 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, quá 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 có khả năng nhập dữ liệu bị hạn chế.

OAuth 2.0 cho phép người dùng chia sẻ dữ liệu cụ thể với một ứng dụng, đồng thời giữ bí mật 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ể sử dụng OAuth 2.0 để có quyền chọn một tệp được lưu trữ trên Google Drive.

Do những ứng dụng sử dụng quy trình này được phân phối cho từng thiết bị nên ứng dụng sẽ được giả định rằng ứng dụng không thể giữ bí mật. Họ có thể truy cập API của Google trong khi người dùng có mặt tại ứ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 mộ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 Universal Windows) có quyền truy cập vào trình duyệt và khả năng nhập dữ liệu đầy đủ, hãy sử dụng quy trình OAuth 2.0 dành 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 mà không có giao diện đồ họa.)

Nếu bạn chỉ muốn đăng nhập vào người dùng bằng Tài khoản Google và sử dụng mã thông báo JWT để nhận 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 bị hạn chế.

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

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

Mọi ứng dụng gọi API của Google đều phải 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 Danh sách tất cả API có sẵn, được nhóm theo nhóm sản phẩm và mức độ phổ biến. Nếu API bạn muốn bật không hiển thị trong danh sách, hãy sử dụng tính 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 đăng nhập ủy quyền

Bất kỳ ứng dụng nào sử dụng OAuth 2.0 để truy cập API của Google đều phải có thông tin đăng nhập ủy quyền để nhận dạng ứng dụng đó bằng máy chủ OAuth 2.0 của Google. Sau đây là các bước giải thích cách tạo thông tin đăng nhập cho dự án của bạn. Sau đó, các ứng dụng của bạn có thể sử dụng thông tin xác thực để truy cập 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 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 OAuth 2.0 rồi nhấp vào 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 các tài nguyên cần thiết, đồng thời cho phép người dùng kiểm soát số 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 đã 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 ủy quyền OAuth 2.0, bạn nên xác định các phạm vi mà ứng dụng của bạn 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.

Lấy 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 nhập dữ liệu bị hạn chế, nhưng người dùng phải có quyền truy cập riêng biệt vào một thiết bị có chức năng nhập dữ liệu phong phú hơn để hoàn thành quy trình ủy quyền này. Quy trình thanh toán có các bước sau đây:

  1. Ứng dụng của bạn gửi yêu cầu đến máy chủ ủy quyền của Google, giúp xác định phạm vi mà ứng dụng của bạn sẽ yêu cầu 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 hiển thị thông tin mà người dùng có thể nhập trên một thiết bị riêng biệt để 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ủ ủy quyền của Google để xác định xem người dùng đã ủy quyền ứng dụng của bạn hay chưa.
  5. Người dùng chuyển sang một thiết bị có chức năng nhập phong phú hơn, khởi chạy trình duyệt web, chuyển đến URL hiển thị ở bước 3 và nhập mã cũng hiển thị ở bước 3. Người dùng sau đó 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 của bạn chứa các mã thông báo mà ứng dụng của bạn cần phải ủy quyền cho các yêu cầu thay mặt cho 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, phản hồi không chứa mã thông báo.)

Hình ảnh dưới đây minh họa quá trình này:

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

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

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

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

Các thông số
client_id Bắt buộc

ID ứng dụng khách cho ứng dụng của bạn. 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 xác định các tài nguyên mà ứng dụng của bạn có thể truy cập thay mặt cho người dùng. Những giá trị này cho biết màn hình đồng ý mà Google hiển thị cho người dùng. Xem danh sách Phạm vi được phép đối với 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 các tài nguyên cần thiết, đồng thời cho phép người dùng kiểm soát số 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 đã yêu cầu và khả năng có được sự đồng ý của người dùng.

Ví dụ

Đoạn mã sau đây hiển thị 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=

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

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

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

Máy chủ ủy 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 riêng để xác định thiết bị chạy ứng dụng đang yêu cầu ủy quyền. Người dùng sẽ cho phép thiết bị đó dùng một thiết bị khác có chức năng nhập dữ 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 để cho phép một ứng dụng chạy trên TV. Trong trường hợp này, device_code xác định TV.

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

expires_in Khoảng thời gian (tính bằng giây) mà device_codeuser_code là hợp lệ. Trong thời gian đó, nếu người dùng chưa hoàn tất quy trình cấp phép và thiết bị của bạn cũng không thăm dò ý kiến để lấy thông tin về quyết định của người dùng, thì bạn có thể phải khởi động lại quy 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 cần đợi 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 phải gửi yêu cầu thăm dò ý kiến đến máy chủ ủy quyền của Google sau mỗi 5 giây. Hãy xem bước 3 để biết thêm chi tiết.
user_code Giá trị phân biệt chữ hoa chữ thường, 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 biệt có các chức năng nhập dữ liệu phong phú hơn. Sau đó, Google sẽ sử dụng giá trị này để hiển thị đúng các 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 URL mà người dùng phải truy cập trên thiết bị riêng biệt, để 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 phản hồ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
}

Đã vượt quá định 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, thì bạn sẽ nhận được phản hồi 403, trong đó có lỗi sau:

{
  "error_code": "rate_limit_exceeded"
}

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

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

Hiển thị verification_urluser_code có được trong bước 2 cho người dùng. Cả hai giá trị đều có thể chứa bất kỳ ký tự nào có thể in 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 biệt và nhập user_code.

Hãy lưu ý những quy tắc sau khi thiết kế giao diện người dùng (UI):

  • user_code
    • user_code phải hiển thị trong trường có thể xử lý ký tự có kích thước 15 \39;W×39. Nói cách khác, nếu bạn có thể hiển thị mã WWWWWWWWWWWWWWW đúng cách, thì 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 thử nghiệm cách user_code hiển thị trong giao diện người dùng của mình.
    • user_code 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 mà 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 theo bất kỳ cách nào, trừ trường hợp bạn có thể xóa lược đồ hiển thị. Nếu bạn dự định loại bỏ lượ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ả hai biến thể httphttps.

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

Vì người dùng sẽ sử dụng một thiết bị riêng biệt để 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 nhận được thông báo khi người dùng phản hồi yêu cầu truy cập. Vì lý do đó, thiết bị yêu cầu cần thăm dò ý kiến của máy chủ ủy 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 yêu cầu thăm dò ý kiến cho đến khi nhận được phản hồi cho biết rằng người dùng đã phản hồi yêu cầu truy cập hoặc cho đến khi device_codeuser_code có được trong bước 2 đã hết hạn. interval được trả về ở bước 2 chỉ định thời gian chờ (tính bằng giây) giữa các yêu cầu.

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

Các thông số
client_id ID ứng dụng khách cho ứng dụng của bạn. 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 của client_id đã 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ủ ủy 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 hiển thị 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 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" \
         /token

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

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

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

Sau khi nhập user_code và nếu chưa đăng nhập, hãy đăng nhập vào Google, người dùng sẽ thấy màn hình đồng ý như màn hình dưới đây:

Ví dụ về màn hình đồng ý cho ứng dụng trên thiết bị

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

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

Đã cấp quyền truy cập

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ã truy cập và mã làm mới. Mã thông báo cho phép thiết bị của bạn truy cập API Google thay mặt cho người dùng. (Thuộc tính scope trong phản hồi xác định các API mà thiết bị có thể truy cập.)

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

Trường
access_token Mã thông báo mà ứng dụng của bạn gửi để ủy quyền một yêu cầu API của Google.
expires_in Thời gian 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ể sử 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ả lại cho 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ề. Lúc này, 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 phản hồ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 chỉ có giá trị lâu dài. Nếu cần quyền truy cập vào một API trong khoảng thời gian dài, ứ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 có loại quyền truy cập này thì ứng dụng của bạn sẽ lưu trữ mã làm mới để sử dụng sau này.

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 máy chủ sẽ có mã trạng thái phản hồi HTTP 403 (Forbidden). Phản hồi đó chứa lỗi sau:

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

Đang chờ xử lý việc ủy quyền

Nếu người dùng chưa hoàn thành quy trình cấp phép, thì máy chủ sẽ trả về mã trạng thái phản hồi HTTP 428 (Precondition Required). Phản hồi đó chứa 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 yêu cầu thăm dò quá thường xuyên, thì máy chủ sẽ trả về mã trạng thái phản hồi HTTP 403 (Forbidden). Phản hồi đó chứa lỗi sau:

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

Những lỗi khác

Máy chủ ủy quyền cũng 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ị tham 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 Mô tả
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ị thông số client_id không hợp lệ.
invalid_grant 400 Giá trị thông số code không hợp lệ.
unsupported_grant_type 400 Giá trị thông số grant_type không hợp lệ.

Gọi API 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ã đó để gọi điện đến API Google thay mặt cho một tài khoản người dùng nhất định nếu(các) phạm vi quyền truy cập mà API yêu cầu đã cấp. Để làm điều này, hãy đưa mã truy cập vào yêu cầu API bằng cách thêm thông số truy vấn access_token hoặc tiêu đề Authorization tiêu đề HTTP Bearer. Khi có thể, bạn nên dùng tiêu đề HTTP vì các chuỗi truy vấn có xu hướng xuất hiện trong nhật ký máy chủ. Trong hầu hết 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 (ví dụ: khi gọi API Drive Files).

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

Ví dụ về HTTP GET

Lệnh gọi đến điểm cuối drive.files (API Drive Drive) bằng cách sử dụ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à lệnh gọi đến cùng một API cho người dùng đã xác thực bằng cách sử dụng thông 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 tra các lệnh này bằng ứng dụng dòng lệnh curl. Sau đây là ví dụ về cách sử dụng tùy chọn tiêu đề HTTP (ưu tiên):

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

Hoặc tùy 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ã thông báo 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 đăng nhập không hợp lệ cho yêu cầu API có 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 về quyền (bao gồm cả khi người dùng không hiện diện) nếu bạn đã yêu cầu quyền truy cập ngoại tuyến vào các phạm vi liên kết với mã đó.

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

Trường
client_id Mã ứng dụng được lấy 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 quy cách OAuth 2.0, bạn phải đặt giá trị của trường này là refresh_token.
refresh_token Mã làm mới sẽ trả về từ sàn giao dịch mã ủy quyền.

Đoạn mã sau đây hiển thị 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 cấp cho ứng dụng, thì máy chủ mã thông báo sẽ trả về một đố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 sẽ 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 khách hà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ả khách hàng. Bạn nên lưu các 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ã thông báo đó, miễn là các mã này 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, ứng dụng có thể gặp phải các giới hạn này. Trong trường hợp đó, các mã thông báo 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 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 Xóa quyền truy cập vào trang web hoặc ứng dụng của trang web bên thứ ba và amp; các ứng dụng có quyền truy cập vào tài khoản của bạn tài liệu hỗ trợ để biết thêm thông tin.

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

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

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

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

Nếu quá 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 đ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 được phép

Luồng OAuth 2.0 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