Google cam kết nâng cao công bằng chủng tộc cho các cộng đồng Da đen. Xem làm thế nào.

Đăng nhập bằng Google cho TV và Thiết bị

Bạn có thể cho phép người dùng đăng nhập vào ứng dụng của mình bằng tài khoản Google của họ trên các thiết bị có khả năng nhập liệu hạn chế, chẳng hạn như TV có kết nối Internet.

Ứng dụng hiển thị mã ngắn và URL đăng nhập cho người dùng. Sau đó, người dùng mở URL đăng nhập trong trình duyệt web, nhập mã và cấp cho ứng dụng quyền truy cập thông tin đăng nhập của người dùng. Cuối cùng, ứng dụng nhận được xác nhận và người dùng đã đăng nhập.

Để sử dụng quy trình đăng nhập này, ứng dụng phải chạy trên thiết bị đáp ứng các tiêu chí sau:

  • Thiết bị phải có khả năng hiển thị URL 40 ký tự và mã người dùng 15 ký tự, cùng với hướng dẫn cho người dùng.
  • Thiết bị phải được kết nối với Internet.

Nhận ID khách hàng và bí mật khách hàng

Ứng dụng của bạn cần có ID ứng dụng khách OAuth 2.0 và bí mật về ứng dụng khách để thực hiện yêu cầu đối với điểm cuối đăng nhập của Google.

Để tìm ID khách hàng và bí mật khách hàng của dự án của bạn, hãy làm như sau:

  1. Chọn thông tin xác thực OAuth 2.0 hiện có hoặc mở trang Thông tin xác thực .
  2. Nếu bạn chưa làm như vậy, hãy tạo thông tin xác thực OAuth 2.0 cho dự án của bạn bằng cách nhấp vào Tạo thông tin xác thực> ID ứng dụng khách OAuth và cung cấp thông tin cần thiết để tạo thông tin xác thực.
  3. Tìm ID ứng dụng khách trong phần ID ứng dụng khách OAuth 2.0 . Để biết chi tiết, hãy nhấp vào ID khách hàng.

Nếu bạn đang tạo ID khách hàng mới, hãy chọn loại ứng dụng TV và Thiết bị đầu vào có giới hạn .

Lấy mã người dùng và URL xác minh

Khi người dùng yêu cầu đăng nhập bằng Tài khoản Google, bạn sẽ nhận được mã người dùng và URL xác minh bằng cách gửi yêu cầu HTTP POST tới điểm cuối của thiết bị OAuth 2.0, https://oauth2.googleapis.com/device/code . Bao gồm ID khách hàng của bạn và danh sách các phạm vi bạn cần với yêu cầu. Nếu bạn chỉ muốn đăng nhập người dùng bằng tài khoản Google của họ, chỉ yêu cầu phạm vi profileemail ; hoặc, nếu bạn muốn thay mặt người dùng yêu cầu quyền gọi một API được hỗ trợ , hãy yêu cầu các phạm vi bắt buộc ngoài phạm vi profileemail .

Sau đây là một yêu cầu mẫu cho mã người dùng:

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

client_id=CLIENT_ID&scope=email%20profile

Sử dụng curl :

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

Phản hồi được trả về dưới dạng đối tượng JSON:

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

Màn hình của bạn ứng dụng các user_codeverification_url giá trị cho người sử dụng, và, đồng thời, các cuộc thăm dò đăng nhập thiết bị đầu cuối tại các quy định interval cho đến khi một trong hai người dùng đăng nhập hoặc thời gian quy định bởi expires_in đã trôi qua.

Hiển thị mã người dùng và URL xác minh

Sau khi bạn nhận được mã người dùng và URL xác minh từ điểm cuối của thiết bị, hãy hiển thị chúng và hướng dẫn người dùng mở URL và nhập mã người dùng.

Các giá trị của verification_urluser_code này tùy thuộc vào sự thay đổi. Thiết kế giao diện người dùng của bạn theo cách có thể xử lý các giới hạn sau:

  • user_code phải được hiển thị trong trường đủ rộng để xử lý 15 ký tự có kích thước W
  • verification_url phải được hiển thị trong trường đủ rộng để xử lý chuỗi URL dài 40 ký tự.

Cả hai chuỗi đều có thể chứa bất kỳ ký tự có thể in nào từ bộ ký tự US-ASCII.

Khi bạn hiển thị chuỗi user_code , không sửa đổi chuỗi theo bất kỳ cách nào (chẳng hạn như thay đổi trường hợp hoặc chèn các ký tự định dạng khác), vì ứng dụng của bạn có thể bị hỏng nếu định dạng của mã thay đổi trong tương lai.

Bạn có thể thay đổi verification_url chuỗi bằng cách tách ra khỏi chương trình này từ địa chỉ URL cho mục đích hiển thị nếu bạn chọn. Nếu bạn làm vậy, hãy đảm bảo rằng ứng dụng của bạn có thể xử lý cả hai biến thể "http" và "https". Không có thoả thay đổi verification_url chuỗi.

Khi người dùng điều hướng đến URL xác minh, họ sẽ thấy một trang tương tự như sau:

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

Sau khi người dùng nhập mã người dùng, trang web đăng nhập Google sẽ hiển thị màn hình đồng ý tương tự như sau:

Ví dụ về màn hình đồng ý cho một ứng dụng khách thiết bị

Nếu người dùng nhấp vào Cho phép , thì ứng dụng của bạn có thể nhận được mã thông báo ID để xác định người dùng, mã thông báo truy cập để gọi các API của Google và mã làm mới để nhận mã thông báo mới.

Nhận mã thông báo ID và mã thông báo làm mới

Sau khi ứng dụng của bạn hiển thị mã người dùng và URL xác minh, hãy bắt đầu thăm dò điểm cuối mã thông báo ( https://oauth2.googleapis.com/token ) với mã thiết bị mà bạn nhận được từ điểm cuối thiết bị. Thăm dò ý kiến ​​điểm cuối mã thông báo vào khoảng thời gian, tính bằng giây, được chỉ định bởi giá trị interval .

Sau đây là một yêu cầu ví dụ:

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

client_id=CLIENT_ID&client_secret=CLIENT_SECRET&code=DEVICE_CODE&grant_type=http://oauth.net/grant_type/device/1.0

Sử dụng curl :

curl -d "client_id=CLIENT_ID&client_secret=CLIENT_SECRET&code=DEVICE_CODE&grant_type=http://oauth.net/grant_type/device/1.0" https://oauth2.googleapis.com/token

Nếu người dùng chưa chấp thuận yêu cầu, phản hồi như sau:

{
  "error" : "authorization_pending"
}

Ứng dụng của bạn phải lặp lại các yêu cầu này với tốc độ không vượt quá giá trị của interval . Nếu ứng dụng của bạn thăm dò quá nhanh, phản hồi như sau:

{
  "error" : "slow_down"
}

Sau khi người dùng đăng nhập và cấp cho ứng dụng của bạn quyền truy cập vào phạm vi bạn đã yêu cầu, phản hồi cho yêu cầu tiếp theo của ứng dụng bao gồm mã thông báo ID, mã thông báo truy cập và mã làm mới:

{
  "access_token" : "ya29.AHES6ZSuY8f6WFLswSv0HZLP2J4cCvFSj-8GiZM0Pr6cgXU",
  "token_type" : "Bearer",
  "expires_in" : 3600,
  "refresh_token" : "1/551G1yXUqgkDGnkfFk6ZbjMMMDIMxo3JFc8lY8CAR-Q",
  "id_token": "eyJhbGciOiJSUzI..."
}

Sau khi nhận được phản hồi này, ứng dụng của bạn có thể giải mã mã thông báo ID để nhận thông tin hồ sơ cơ bản về người dùng đã đăng nhập hoặc gửi mã thông báo ID đến máy chủ phụ trợ của ứng dụng để xác thực an toàn với máy chủ. Ngoài ra, ứng dụng của bạn có thể sử dụng mã thông báo truy cập để gọi các API của Google mà người dùng đã ủy quyền.

ID và mã thông báo truy cập có thời gian tồn tại hạn chế. Để giữ cho người dùng đăng nhập ngoài vòng đời của mã thông báo, hãy lưu trữ mã làm mới và sử dụng nó để yêu cầu mã thông báo mới .

Nhận thông tin hồ sơ người dùng từ mã thông báo ID

Bạn có thể nhận thông tin hồ sơ về người dùng đã đăng nhập bằng cách giải mã mã thông báo ID với bất kỳ thư viện giải mã JWT nào. Ví dụ: sử dụng thư viện JavaScript Auth0 jwt -decode :

var user_profile = jwt_decode(id_token);

// The "sub" field is available on all ID tokens. This value is unique for each
// Google account and can be used to identify the user. (But do not send this
// value to your server; instead, send the whole ID token so its authenticity
// can be verified.)
var user_id = user_profile["sub"];

// These values are available when you request the "profile" and "email" scopes.
var user_email = user_profile["email"];
var email_verified = user_profile["email_verified"];
var user_name = user_profile["name"];
var user_photo_url = user_profile["picture"];
var user_given_name = user_profile["given_name"];
var user_family_name = user_profile["family_name"];
var user_locale = user_profile["locale"];

Thêm thông tin