Tài liệu tham khảo về Sign in with Google JavaScript API

Trang tham khảo này mô tả API JavaScript Đăng nhập bằng Google, dùng để hiển thị nút Đăng nhập bằng Google hoặc lời nhắc Chạm một lần trên các trang web.

Phương thức: google.accounts.id.initialize

Phương thức google.accounts.id.initialize khởi chạy ứng dụng Đăng nhập bằng Google dựa trên đối tượng cấu hình. Hãy xem ví dụ về mã sau đây của phương thức:

google.accounts.id.initialize(IdConfiguration)

Ví dụ về mã sau đây triển khai phương thức google.accounts.id.initialize bằng hàm onload:

<script>
  window.onload = function () {
    google.accounts.id.initialize({
      client_id: 'YOUR_GOOGLE_CLIENT_ID',
      callback: handleCredentialResponse
    });
    google.accounts.id.prompt();
  };
</script>

Phương thức google.accounts.id.initialize tạo một thực thể ứng dụng Đăng nhập bằng Google mà tất cả các mô-đun trong cùng một trang web đều có thể sử dụng ngầm.

  • Bạn chỉ cần gọi phương thức google.accounts.id.initialize một lần ngay cả khi bạn sử dụng nhiều mô-đun (như One Tap, nút được cá nhân hoá, thu hồi, v.v.) trên cùng một trang web.
  • Nếu bạn gọi phương thức google.accounts.id.initialize nhiều lần, thì chỉ các cấu hình trong lệnh gọi gần đây nhất mới được ghi nhớ và sử dụng.

Bạn thực sự đặt lại cấu hình bất cứ khi nào bạn gọi phương thức google.accounts.id.initialize và tất cả các phương thức tiếp theo trong cùng một trang web sẽ ngay lập tức sử dụng cấu hình mới.

Kiểu dữ liệu: IdConfiguration

Bảng sau đây liệt kê các trường và nội dung mô tả về kiểu dữ liệu IdConfiguration:

Trường
client_id Mã ứng dụng khách của ứng dụng
color_scheme Bảng phối màu áp dụng cho lời nhắc của tính năng Một lần chạm.
auto_select Bật tính năng tự động chọn.
callback Hàm JavaScript xử lý mã thông báo giá trị nhận dạng. Tính năng Một lần nhấn của Google và nút Đăng nhập bằng Google ở chế độ trải nghiệm người dùng popup sử dụng thuộc tính này.
login_uri URL của điểm cuối đăng nhập. Nút Đăng nhập bằng Google redirect Chế độ trải nghiệm người dùng sử dụng thuộc tính này.
native_callback Hàm JavaScript xử lý thông tin đăng nhập bằng mật khẩu.
cancel_on_tap_outside Huỷ lời nhắc nếu người dùng nhấp vào bên ngoài lời nhắc.
prompt_parent_id Mã DOM của phần tử vùng chứa lời nhắc One Tap
nonce Một chuỗi ngẫu nhiên cho mã thông báo nhận dạng
essential_claims Các thông báo xác nhận quyền sở hữu bổ sung cần đưa vào mã thông báo giá trị nhận dạng do Google trả về.
context Tiêu đề và từ ngữ trong lời nhắc của tính năng Đăng nhập bằng một lần chạm
state_cookie_domain Nếu bạn cần gọi tính năng Một lần nhấn trong miền gốc và các miền con của miền đó, hãy truyền miền gốc vào trường này để sử dụng một cookie dùng chung duy nhất.
ux_mode Quy trình trải nghiệm người dùng của nút Đăng nhập bằng Google
allowed_parent_origin Các nguồn gốc được phép nhúng iframe trung gian. Tính năng Một lần chạm sẽ chạy ở chế độ iframe trung gian nếu có trường này.
intermediate_iframe_close_callback Ghi đè hành vi iframe trung gian mặc định khi người dùng đóng One Tap theo cách thủ công.
itp_support Bật trải nghiệm người dùng Một lần chạm đã nâng cấp trên trình duyệt ITP.
login_hint Bỏ qua bước chọn tài khoản bằng cách cung cấp gợi ý về người dùng.
hd Giới hạn lựa chọn tài khoản theo miền.
use_fedcm_for_prompt Cho phép trình duyệt kiểm soát lời nhắc đăng nhập của người dùng và điều chỉnh quy trình đăng nhập giữa trang web của bạn và Google.
use_fedcm_for_button Trường này xác định xem có nên sử dụng trải nghiệm người dùng nút FedCM trên Chrome hay không (máy tính M125 trở lên và Android M128 trở lên). Giá trị mặc định là false.
button_auto_select Có bật tuỳ chọn tự động chọn cho quy trình nút FedCM hay không. Nếu bạn bật tính năng này, người dùng cũ có phiên hoạt động trên Google sẽ tự động được đăng nhập, bỏ qua lời nhắc của Trình chọn tài khoản.Giá trị mặc định là false.

client_id

Trường này là mã ứng dụng khách của ứng dụng, được tìm thấy và tạo trong Google Cloud Console. Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
chuỗi Có client_id: "CLIENT_ID.apps.googleusercontent.com"

color_scheme

Trường này là bảng phối màu được áp dụng cho lời nhắc của tính năng Một lần chạm. Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
chuỗi Không bắt buộc. Giá trị mặc định là bảng phối màu theo giá trị mặc định của hệ thống người dùng. color_scheme: "dark"

Bảng sau đây liệt kê các bảng phối màu hiện có và nội dung mô tả về các bảng phối màu đó.

Phối màu
default Áp dụng bảng phối màu mặc định của hệ thống của người dùng, tuỳ thuộc vào bảng phối màu mà người dùng ưu tiên là sáng hay tối.
light Áp dụng bảng phối màu sáng.
dark Áp dụng bảng phối màu tối.

auto_select

Trường này xác định xem mã thông báo nhận dạng có được tự động trả về mà không cần người dùng tương tác hay không khi chỉ có một phiên Google đã phê duyệt ứng dụng của bạn trước đó. Giá trị mặc định là false. Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
boolean Không bắt buộc auto_select: true

callback

Trường này là hàm JavaScript xử lý mã thông báo giá trị nhận dạng được trả về từ lời nhắc Một lần chạm hoặc cửa sổ bật lên. Bạn bắt buộc phải sử dụng thuộc tính này nếu dùng chế độ trải nghiệm người dùng popup của tính năng Một lần nhấn của Google hoặc nút Đăng nhập bằng Google. Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
hàm Bắt buộc đối với tính năng Một lần chạm và chế độ trải nghiệm người dùng popup callback: handleResponse

login_uri

Thuộc tính này là URI của điểm cuối đăng nhập.

Giá trị này phải khớp chính xác với một trong các URI chuyển hướng được uỷ quyền cho ứng dụng OAuth 2.0 mà bạn đã định cấu hình trong Google Cloud Console và phải tuân thủ Quy tắc xác thực URI chuyển hướng của chúng tôi.

Bạn có thể bỏ qua thuộc tính này nếu trang hiện tại là trang đăng nhập của bạn. Trong trường hợp đó, thông tin đăng nhập sẽ được đăng lên trang này theo mặc định.

Phản hồi thông tin xác thực mã thông báo giá trị nhận dạng được đăng lên điểm cuối đăng nhập của bạn khi người dùng nhấp vào nút Đăng nhập bằng Google và chế độ UX chuyển hướng được sử dụng.

Hãy xem bảng sau để biết thêm thông tin:

Loại Không bắt buộc Ví dụ
URL Giá trị mặc định là URI của trang hiện tại hoặc giá trị mà bạn chỉ định.
Chỉ được dùng khi bạn đặt ux_mode: "redirect".
login_uri: "https://www.example.com/login"

Điểm cuối đăng nhập của bạn phải xử lý các yêu cầu POST chứa tham số credential có giá trị mã thông báo giá trị nhận dạng trong phần nội dung. select_by không được đưa vào các yêu cầu HTTP POST đến login_uri hoặc data-login_uri và chỉ được trả về trong đối tượng CredentialResponse được truyền đến hàm JavaScript callback.

native_callback

Trường này là tên của hàm JavaScript xử lý thông tin xác thực mật khẩu được trả về từ trình quản lý thông tin xác thực tích hợp sẵn của trình duyệt. Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
hàm Không bắt buộc native_callback: handleResponse

cancel_on_tap_outside

Trường này đặt việc có huỷ yêu cầu một lần nhấn hay không nếu người dùng nhấp vào bên ngoài lời nhắc. Giá trị mặc định là true. Bạn có thể tắt tính năng này nếu đặt giá trị thành false. Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
boolean Không bắt buộc cancel_on_tap_outside: false

prompt_parent_id

Thuộc tính này đặt mã DOM của phần tử vùng chứa. Nếu bạn không đặt thuộc tính này, lời nhắc Một lần chạm sẽ xuất hiện ở góc trên cùng bên phải của cửa sổ. Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
chuỗi Không bắt buộc prompt_parent_id: 'parent_id'

nonce

Trường này là một chuỗi ngẫu nhiên được mã thông báo giá trị nhận dạng sử dụng để ngăn chặn các cuộc tấn công phát lại. Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
chuỗi Không bắt buộc nonce: "biaqbm70g23"

Độ dài của số chỉ dùng một lần bị giới hạn ở kích thước JWT tối đa mà môi trường của bạn hỗ trợ, cũng như các quy định ràng buộc về kích thước HTTP của từng trình duyệt và máy chủ.

essential_claims

Trường này là một chuỗi dùng để yêu cầu thêm các thông báo xác nhận quyền sở hữu vào mã thông báo giá trị nhận dạng do Google trả về. Để xem danh sách đầy đủ các tuyên bố được Google chấp nhận, hãy xem các tuyên bố được hỗ trợ.

Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
chuỗi Không bắt buộc essential_claims: "auth_time, amr"

bối cảnh

Trường này thay đổi văn bản của tiêu đề và thông báo xuất hiện trong lời nhắc của tính năng Một lần chạm, không ảnh hưởng đến trình duyệt ITP. Giá trị mặc định là signin.

Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
chuỗi Không bắt buộc context: "use"

Bảng sau đây liệt kê tất cả bối cảnh hiện có và nội dung mô tả về các bối cảnh đó:

Ngữ cảnh
signin "Đăng nhập vào"
signup "Đăng ký"
use "Sử dụng"

Nếu bạn cần hiển thị tính năng Một lần chạm trong miền gốc và các miền con của miền gốc, hãy truyền miền gốc vào trường này để sử dụng một cookie trạng thái chia sẻ duy nhất. Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
chuỗi Không bắt buộc state_cookie_domain: "example.com"

ux_mode

Sử dụng trường này để đặt quy trình trải nghiệm người dùng mà nút Đăng nhập bằng Google sử dụng. Giá trị mặc định là popup. Thuộc tính này không ảnh hưởng đến trải nghiệm người dùng OneTap. Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
chuỗi Không bắt buộc ux_mode: "redirect"

Bảng sau đây liệt kê các chế độ trải nghiệm người dùng hiện có và nội dung mô tả về các chế độ đó.

Chế độ trải nghiệm người dùng
popup Thực hiện quy trình trải nghiệm người dùng đăng nhập trong cửa sổ bật lên.
redirect Thực hiện quy trình trải nghiệm người dùng khi đăng nhập bằng cách chuyển hướng toàn trang.

allowed_parent_origin

Các nguồn gốc được phép nhúng iframe trung gian. Tính năng Một lần chạm sẽ chạy ở chế độ iframe trung gian nếu có trường này. Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
chuỗi hoặc mảng chuỗi Không bắt buộc allowed_parent_origin: "https://example.com"

Bảng sau đây liệt kê các loại giá trị được hỗ trợ và nội dung mô tả về các loại giá trị đó.

Loại giá trị
string Một URI miền duy nhất. "https://example.com"
string array Một mảng URI miền. ["https://news.example.com", "https://local.example.com"]

Tiền tố ký tự đại diện cũng được hỗ trợ. Ví dụ: "https://*.example.com" khớp với example.com và các miền con của miền này ở mọi cấp (ví dụ: news.example.com, login.news.example.com). Những điều cần lưu ý khi sử dụng ký tự đại diện:

  • Chuỗi mẫu không được chỉ bao gồm một ký tự đại diện và một miền cấp cao nhất. Ví dụ: https://.com và https://.co.uk không hợp lệ vì "https://.example.com" khớp với example.com và tất cả miền con của miền này. Sử dụng danh sách được phân tách bằng dấu phẩy để biểu thị hai miền khác nhau. Ví dụ: "https://example1.com,https://.example2.com" khớp với miền example1.com, example2.com và miền con của example2.com
  • Miền ký tự đại diện phải bắt đầu bằng giao thức https:// an toàn, vì vậy, "*.example.com" được coi là không hợp lệ.

Nếu giá trị của trường allowed_parent_origin không hợp lệ, thì quá trình khởi chạy tính năng Một lần chạm của chế độ iframe trung gian sẽ không thành công và dừng lại.

intermediate_iframe_close_callback

Ghi đè hành vi iframe trung gian mặc định khi người dùng đóng One Tap theo cách thủ công bằng cách nhấn vào nút "X" trong giao diện người dùng One Tap. Hành vi mặc định là xoá iframe trung gian khỏi DOM ngay lập tức.

Trường intermediate_iframe_close_callback chỉ có hiệu lực ở chế độ iframe trung gian. Và điều này chỉ ảnh hưởng đến iframe trung gian, thay vì iframe của tính năng Một lần chạm. Giao diện người dùng của tính năng Một lần chạm sẽ bị xoá trước khi lệnh gọi lại được gọi.

Loại Bắt buộc Ví dụ
hàm Không bắt buộc intermediate_iframe_close_callback: logBeforeClose

itp_support

Trường này xác định xem có nên bật trải nghiệm người dùng Đăng nhập bằng một lần chạm đã nâng cấp trên các trình duyệt hỗ trợ tính năng Ngăn chặn theo dõi thông minh (ITP) hay không. Giá trị mặc định là false. Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
boolean Không bắt buộc itp_support: false

login_hint

Nếu ứng dụng của bạn biết trước người dùng nào nên đăng nhập, thì ứng dụng đó có thể cung cấp gợi ý đăng nhập cho Google. Khi thành công, bước chọn tài khoản sẽ bị bỏ qua. Các giá trị được chấp nhận là: địa chỉ email hoặc giá trị trường sub của mã thông báo giá trị nhận dạng.

Để biết thêm thông tin, hãy xem trường login_hint trong tài liệu về OpenID Connect.

Loại Bắt buộc Ví dụ
Chuỗi, địa chỉ email hoặc giá trị từ trường sub của mã thông báo giá trị nhận dạng. Không bắt buộc login_hint: 'elisa.beckett@gmail.com'

hd

Khi người dùng có nhiều tài khoản và chỉ nên đăng nhập bằng tài khoản Workspace, hãy sử dụng tài khoản này để cung cấp gợi ý về tên miền cho Google. Khi thành công, tài khoản người dùng hiển thị trong quá trình chọn tài khoản sẽ bị giới hạn ở miền được cung cấp. Giá trị ký tự đại diện: * chỉ cung cấp tài khoản Workspace cho người dùng và loại trừ tài khoản người dùng (user@gmail.com) trong quá trình chọn tài khoản.

Để biết thêm thông tin, hãy xem trường hd trong tài liệu về OpenID Connect.

Loại Bắt buộc Ví dụ
Chuỗi. Tên miền đủ điều kiện hoặc *. Không bắt buộc hd: '*'

use_fedcm_for_prompt

Cho phép trình duyệt kiểm soát lời nhắc đăng nhập của người dùng và điều phối quy trình đăng nhập giữa trang web của bạn và Google. Giá trị mặc định là false. Hãy xem trang Di chuyển sang FedCM để biết thêm thông tin.

Loại Bắt buộc Ví dụ
boolean Không được dùng nữa use_fedcm_for_prompt: true

use_fedcm_for_button

Trường này xác định xem có nên sử dụng trải nghiệm người dùng nút FedCM trên Chrome (máy tính M125 trở lên và Android M128 trở lên) hay không. Giá trị mặc định là false. Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
boolean Không bắt buộc use_fedcm_for_button: true

button_auto_select

Trường này xác định xem có bật tuỳ chọn tự động chọn cho quy trình nút FedCM hay không. Nếu bạn bật tính năng này, người dùng cũ có phiên hoạt động trên Google sẽ tự động được đăng nhập mà không cần thông qua lời nhắc của Trình chọn tài khoản. Giá trị mặc định là false. Bạn cần bật rõ ràng tính năng tự động đăng nhập bằng nút trong quá trình ra mắt tính năng chọn sử dụng. Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
boolean Không bắt buộc button_auto_select: true

Phương thức: google.accounts.id.prompt

Phương thức google.accounts.id.prompt hiển thị lời nhắc Một lần chạm hoặc trình quản lý thông tin xác thực tích hợp sẵn trong trình duyệt sau khi phương thức initialize() được gọi. Hãy xem ví dụ về mã sau đây của phương thức:

 google.accounts.id.prompt(/**
 @type{(function(!PromptMomentNotification):void)=} */ momentListener)

Thông thường, phương thức prompt() được gọi khi tải trang. Do trạng thái phiên và chế độ cài đặt của người dùng ở phía Google, giao diện người dùng của lời nhắc Một lần nhấn có thể không hiển thị. Để nhận thông báo về trạng thái giao diện người dùng cho nhiều thời điểm, hãy truyền một hàm để nhận thông báo về trạng thái giao diện người dùng.

Thông báo được kích hoạt vào những thời điểm sau:

  • Thời điểm hiển thị: Thời điểm này xảy ra sau khi phương thức prompt() được gọi. Thông báo chứa một giá trị boolean để cho biết giao diện người dùng có hiển thị hay không.
  • Khoảnh khắc bị bỏ qua: Trường hợp này xảy ra khi lời nhắc một lần chạm bị đóng do tự động huỷ, huỷ thủ công hoặc khi Google không cấp được thông tin xác thực, chẳng hạn như khi phiên đã chọn đã đăng xuất khỏi Google.

    Trong những trường hợp này, bạn nên tiếp tục với nhà cung cấp danh tính tiếp theo (nếu có).

  • Thời điểm đóng: Điều này xảy ra khi Google truy xuất thành công thông tin xác thực hoặc người dùng muốn dừng quy trình truy xuất thông tin xác thực. Ví dụ: khi người dùng bắt đầu nhập tên người dùng và mật khẩu vào hộp thoại đăng nhập, bạn có thể gọi phương thức google.accounts.id.cancel() để đóng lời nhắc Một lần chạm và kích hoạt khoảnh khắc đóng.

Đoạn mã ví dụ sau đây triển khai khoảnh khắc bị bỏ qua:

<script>
  window.onload = function () {
    google.accounts.id.initialize(...);
    google.accounts.id.prompt((notification) => {
      if (notification.isNotDisplayed() || notification.isSkippedMoment()) {
        // continue with another identity provider.
      }
    });
  };
</script>

Loại dữ liệu: PromptMomentNotification

Bảng sau đây liệt kê các phương thức và nội dung mô tả về kiểu dữ liệu PromptMomentNotification:

Phương thức
isDisplayMoment() Trả về true nếu lời nhắc Một lần chạm xuất hiện.

Lưu ý: Khi FedCM được bật, thông báo này sẽ không được hỗ trợ. Hãy xem trang Di chuyển sang FedCM để biết thêm thông tin.
isDisplayed() Trả về true nếu loại khoảnh khắc là PromptMoment.DISPLAY và lời nhắc một lần nhấn được hiển thị.

Lưu ý: Khi FedCM được bật, thông báo này sẽ không được hỗ trợ. Hãy xem trang Di chuyển sang FedCM để biết thêm thông tin.
isNotDisplayed() Trả về true nếu loại khoảnh khắc là PromptMoment.DISPLAY và lời nhắc một lần nhấn không xuất hiện.

Lưu ý: Khi FedCM được bật, thông báo này sẽ không được hỗ trợ. Hãy xem trang Di chuyển sang FedCM để biết thêm thông tin.
getNotDisplayedReason()

Lý do chi tiết khiến giao diện người dùng không hiển thị. Sau đây là các giá trị có thể có:

  • browser_not_supported
  • invalid_client
  • missing_client_id
  • opt_out_or_no_session
  • secure_http_required
  • suppressed_by_user
  • unregistered_origin
  • unknown_reason
Lưu ý: Khi FedCM được bật, thông báo này sẽ không được hỗ trợ. Hãy xem trang Di chuyển sang FedCM để biết thêm thông tin.
isSkippedMoment() Trả về true nếu loại khoảnh khắc là PromptMoment.SKIPPED

Lưu ý: Khi FedCM được bật, phương thức này được hỗ trợ một phần. Cụ thể, tính năng này không hỗ trợ lý do bỏ qua là user_cancel. Hãy xem trang Di chuyển sang FedCM để biết thêm thông tin.
getSkippedReason()

Lý do chi tiết khiến khoảnh khắc bị bỏ qua. Sau đây là các giá trị có thể có:

  • auto_cancel
  • user_cancel
  • tap_outside
  • issuing_failed
Lưu ý: Khi FedCM được bật, phương thức này sẽ được hỗ trợ một phần. Cụ thể, tính năng này không hỗ trợ lý do bỏ qua là user_cancel. Hãy xem trang Di chuyển sang FedCM để biết thêm thông tin.
isDismissedMoment() Trả về true nếu loại khoảnh khắc là PromptMoment.DISMISSED.

Lưu ý: Khi FedCM được bật, phương thức này sẽ được hỗ trợ đầy đủ. Hãy xem trang Di chuyển sang FedCM để biết thêm thông tin.
getDismissedReason()

Lý do chi tiết cho việc đóng. Sau đây là các giá trị có thể có:

  • credential_returned
  • cancel_called
  • flow_restarted
Lưu ý: Khi FedCM được bật, phương thức này sẽ được hỗ trợ đầy đủ. Hãy xem trang Di chuyển sang FedCM để biết thêm thông tin.
getMomentType()

Trả về một chuỗi cho loại khoảnh khắc. Sau đây là các giá trị có thể có:

  • display
  • skipped
  • dismissed

Kiểu dữ liệu: CredentialResponse

Khi hàm callback được gọi, một đối tượng CredentialResponse sẽ được truyền dưới dạng tham số. Bảng sau đây liệt kê các trường có trong đối tượng phản hồi thông tin xác thực:

Trường
credential Mã thông báo mã nhận dạng JWT được mã hoá mà Google phát hành.
select_by Cách người dùng đăng nhập.
state Trường này chỉ được xác định khi người dùng nhấp vào nút Đăng nhập bằng Google để đăng nhập và thuộc tính state của nút được chỉ định.

giấy chứng nhận

Trường này là mã thông báo giá trị nhận dạng dưới dạng chuỗi Mã thông báo cho trang web theo chuẩn JSON (JWT) được mã hoá base64.

Khi được giải mã, JWT sẽ có dạng như ví dụ sau:

header
{
  "alg": "RS256",
  "kid": "f05415b13acb9590f70df862765c655f5a7a019e", // JWT signature
  "typ": "JWT"
}
payload
{
  "iss": "https://accounts.google.com", // The JWT's issuer
  "nbf":  161803398874,
  "aud": "314159265-pi.apps.googleusercontent.com", // Your server's client ID
  "sub": "3141592653589793238", // The unique ID of the user's Google Account
  "hd": "gmail.com", // If present, the host domain of the user's Google Workspace email address
  "auth_time": 1748875426,
  "amr": ["mfa", "pwd", "tel"],
  "email": "elisa.g.beckett@gmail.com", // The user's email address
  "email_verified": true, // true, if Google has verified the email address
  "azp": "314159265-pi.apps.googleusercontent.com",
  "name": "Elisa Beckett",
                            // If present, a URL to user's profile picture
  "picture": "https://lh3.googleusercontent.com/a-/e2718281828459045235360uler",
  "given_name": "Elisa",
  "family_name": "Beckett",
  "iat": 1596474000, // Unix timestamp of the assertion creation time
  "exp": 1596477600, // Unix timestamp of the assertion expiration time
  "jti": "abc161803398874def"
}

Trường sub là giá trị nhận dạng riêng biệt trên toàn cầu cho Tài khoản Google. Chỉ sử dụng trường sub làm giá trị nhận dạng cho người dùng vì trường này là duy nhất trong tất cả Tài khoản Google và không bao giờ được sử dụng lại.

Khi sử dụng các trường email, email_verified và hd, bạn có thể xác định xem Google có lưu trữ và có thẩm quyền đối với một địa chỉ email hay không. Trong trường hợp Google có thẩm quyền, người dùng được xác nhận là chủ sở hữu hợp pháp của tài khoản.

Các trường hợp Google có thẩm quyền:

  • email có hậu tố @gmail.com, đây là Tài khoản Gmail.
  • email_verified là true và hd được đặt, đây là một tài khoản Google Workspace.

Người dùng có thể đăng ký Tài khoản Google mà không cần sử dụng Gmail hoặc Google Workspace. Khi email không chứa hậu tố @gmail.com và không có hd, Google không có thẩm quyền và bạn nên sử dụng mật khẩu hoặc các phương thức xác thực khác để xác minh người dùng. email_verfied cũng có thể đúng vì Google ban đầu đã xác minh người dùng khi Tài khoản Google được tạo, tuy nhiên, quyền sở hữu tài khoản email bên thứ ba có thể đã thay đổi kể từ đó.

Trường exp cho biết thời gian hết hạn để bạn xác minh mã thông báo ở phía máy chủ. Thời gian này là một giờ đối với mã thông báo giá trị nhận dạng có được từ tính năng Đăng nhập bằng Google. Bạn cần xác minh mã thông báo trước khi mã thông báo hết hạn. Không sử dụng exp để quản lý phiên. Mã thông báo giá trị nhận dạng đã hết hạn không có nghĩa là người dùng đã đăng xuất. Ứng dụng của bạn chịu trách nhiệm quản lý phiên của người dùng.

select_by

Bảng sau đây liệt kê các giá trị có thể có cho trường select_by. Loại nút được sử dụng cùng với phiên và trạng thái đồng ý được dùng để đặt giá trị,

  • Người dùng đã nhấn nút Một lần chạm hoặc Đăng nhập bằng Google hoặc sử dụng quy trình Tự động đăng nhập không chạm.

  • Tìm thấy một phiên hiện có hoặc người dùng đã chọn và đăng nhập vào một Tài khoản Google để thiết lập phiên mới.

  • Trước khi chia sẻ thông tin xác thực mã thông báo giá trị nhận dạng với ứng dụng của bạn, người dùng sẽ

    • nhấn vào nút Xác nhận để đồng ý chia sẻ thông tin đăng nhập, hoặc
    • đã đồng ý và sử dụng tính năng Chọn tài khoản để chọn một Tài khoản Google.

Giá trị của trường này được đặt thành một trong các loại sau:

Giá trị Mô tả
auto Tự động đăng nhập người dùng có phiên hoạt động hiện tại, người dùng đã đồng ý chia sẻ thông tin đăng nhập trước đó. Chỉ áp dụng cho các trình duyệt không hỗ trợ FedCM.
user Một người dùng có phiên hoạt động hiện tại và đã đồng ý trước đó đã nhấn nút "Tiếp tục với tư cách là" của tính năng Một lần chạm để chia sẻ thông tin đăng nhập. Chỉ áp dụng cho các trình duyệt không hỗ trợ FedCM.
fedcm Người dùng đã nhấn vào nút "Tiếp tục dưới tên" của tính năng Một lần chạm để chia sẻ thông tin xác thực bằng FedCM. Chỉ áp dụng cho các trình duyệt hỗ trợ FedCM.
fedcm_auto Tự động đăng nhập cho người dùng có phiên hoạt động hiện tại và trước đó đã đồng ý chia sẻ thông tin đăng nhập bằng tính năng Một lần chạm của FedCM. Chỉ áp dụng cho các trình duyệt hỗ trợ FedCM.
user_1tap Người dùng có phiên hoạt động hiện tại đã nhấn vào nút "Tiếp tục với tư cách là" của tính năng Một lần chạm để cấp sự đồng ý và chia sẻ thông tin đăng nhập. Chỉ áp dụng cho Chrome phiên bản 75 trở lên.
user_2tap Một người dùng chưa có phiên hoạt động đã nhấn vào nút "Tiếp tục dưới tên" của tính năng Một lần chạm để chọn một tài khoản, sau đó nhấn vào nút Xác nhận trong cửa sổ bật lên để đồng ý và chia sẻ thông tin đăng nhập. Áp dụng cho các trình duyệt không dựa trên Chromium.
itp Một người dùng đã đồng ý trước đó nhấn vào nút Đăng nhập bằng một lần chạm trên trình duyệt ITP.
itp_confirm Người dùng không đồng ý đã nhấn vào nút Chạm một lần trên trình duyệt ITP và nhấn vào nút "Tiếp tục" để đồng ý và chia sẻ thông tin đăng nhập.
btn Người dùng đã đồng ý trước đó nhấn vào nút Đăng nhập bằng Google và chọn một Tài khoản Google trong phần "Chọn tài khoản" để chia sẻ thông tin đăng nhập.
btn_confirm Một người dùng chưa cấp quyền đồng ý đã nhấn vào nút Đăng nhập bằng Google và nhấn vào nút "Tiếp tục" để cấp quyền đồng ý và chia sẻ thông tin đăng nhập.

tiểu bang

Trường này chỉ được xác định khi người dùng nhấp vào nút Đăng nhập bằng Google để đăng nhập và thuộc tính state của nút được nhấp vào được chỉ định. Giá trị của trường này giống với giá trị bạn đã chỉ định trong thuộc tính state của nút.

Vì nhiều nút Đăng nhập bằng Google có thể hiển thị trên cùng một trang, nên bạn có thể chỉ định cho mỗi nút một chuỗi riêng biệt. Do đó, bạn có thể sử dụng trường state này để xác định nút mà người dùng đã nhấp vào để đăng nhập.

Phương thức: google.accounts.id.renderButton

Phương thức google.accounts.id.renderButton hiển thị nút Đăng nhập bằng Google trên các trang web của bạn.

Hãy xem ví dụ về mã sau đây của phương thức:

google.accounts.id.renderButton(
      /** @type{!HTMLElement} */ parent,
      /** @type{!GsiButtonConfiguration} */ options
    )

Kiểu dữ liệu: GsiButtonConfiguration

Bảng sau đây liệt kê các trường và nội dung mô tả về kiểu dữ liệu GsiButtonConfiguration:

Thuộc tính
type Loại nút: biểu tượng hoặc nút tiêu chuẩn.
theme Giao diện của nút. Ví dụ: filled_blue hoặc filled_black.
size Kích thước nút. Ví dụ: nhỏ hoặc lớn.
text Văn bản trên nút. Ví dụ: "Đăng nhập bằng Google" hoặc "Đăng ký bằng Google".
shape Hình dạng nút. Ví dụ: hình chữ nhật hoặc hình tròn.
logo_alignment Cách căn chỉnh biểu trưng Google: trái hoặc giữa.
width Chiều rộng của nút, tính bằng pixel.
locale Nếu bạn đặt, thì ngôn ngữ của nút sẽ được hiển thị.
click_listener Nếu được đặt, hàm này sẽ được gọi khi người dùng nhấp vào nút Đăng nhập bằng Google.
state Nếu được đặt, chuỗi này sẽ trả về cùng với mã thông báo giá trị nhận dạng.

Loại thuộc tính

Các phần sau đây trình bày thông tin chi tiết về từng loại thuộc tính và một ví dụ.

loại

Loại nút. Giá trị mặc định là standard.

Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
chuỗi Có type: "icon"

Bảng sau đây liệt kê các loại nút hiện có và nội dung mô tả về các loại nút đó:

Loại
standard
Nút có văn bản hoặc thông tin được cá nhân hoá.
icon
Một nút biểu tượng không có văn bản.

chủ đề

Giao diện của nút. Giá trị mặc định là outline. Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
chuỗi Không bắt buộc theme: "filled_blue"

Bảng sau đây liệt kê các giao diện hiện có và nội dung mô tả về các giao diện đó:

Giao diện Mẫu Thông số kỹ thuật
outline
standard-button-white icon-button-white personalized-button-white
Giao diện nút chuẩn.
Tô màu: #FFFFFF
Nét vẽ: #747775 | 1px | bên trong
Phông chữ: #1F1F1F | Roboto Medium | 14/20
Cá nhân hoá: #1F1F1F | Roboto | Medium 12/14 | Regular 11/13
filled_blue
Giao diện nút màu xanh dương.
Tô: #0B57D0
Nét: #OB57D0 | 1px | bên trong
Phông chữ: #FFFFFF | Google Sans Medium | 14/20
Cá nhân hoá: #FFFFFF | Roboto | Medium 12/14 | Regular 11/13
filled_black
Giao diện nút màu đen với biểu trưng tương phản.
Tô màu: #202124
Nét vẽ: #OB57D0 | 1px | bên trong
Phông chữ: #FFFFFF | Google Sans Medium | 14/20
Cá nhân hoá: #FFFFFF | Roboto | Medium 12/14 | Regular 11/13
outline_dark
Giao diện nút có màu đen.
Tô: #131314
Nét: #8E918F | 1px | bên trong
Phông chữ: #FFFFFF | Google Sans Medium | 14/20
Cá nhân hoá: #FFFFFF | Roboto | Medium 12/14 | Regular 11/13

size

Kích thước nút. Giá trị mặc định là large. Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
chuỗi Không bắt buộc size: "small"

Bảng sau đây liệt kê các kích thước nút hiện có và nội dung mô tả:

Kích thước
large
Nút tiêu chuẩn lớn Nút biểu tượng lớn Nút lớn, được cá nhân hoá
Nút có kích thước lớn.
medium
Nút tiêu chuẩn cỡ trung bình Nút biểu tượng trung bình
Nút có kích thước trung bình.
small
Nút đăng nhập nhỏ Nút đăng nhập nhỏ
Nút có kích thước nhỏ.

văn bản

Văn bản trên nút. Giá trị mặc định là signin_with. Không có sự khác biệt về hình ảnh đối với văn bản của các nút biểu tượng có thuộc tính text khác nhau. Trường hợp ngoại lệ duy nhất là khi văn bản được đọc để hỗ trợ tiếp cận màn hình.

Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
chuỗi Không bắt buộc text: "signup_with"

Bảng sau đây liệt kê tất cả văn bản nút hiện có và nội dung mô tả:

Văn bản
signin_with
Văn bản trên nút là "Đăng nhập bằng Google".
signup_with
Văn bản trên nút là "Đăng ký bằng Google".
continue_with
Văn bản trên nút là "Tiếp tục bằng Google".
signin
Văn bản trên nút là "Đăng nhập".

hình dạng

Hình dạng nút. Giá trị mặc định là rectangular. Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
chuỗi Không bắt buộc shape: "rectangular"

Bảng sau đây liệt kê các hình dạng nút hiện có và nội dung mô tả:

Hình dạng
rectangular
Nút hình chữ nhật. Nếu được dùng cho loại nút icon, thì thuộc tính này sẽ giống với square.
pill
Nút hình viên thuốc. Nếu được dùng cho loại nút icon, thì nút này sẽ giống với circle.
circle
Nút hình tròn. Nếu được dùng cho loại nút standard, thì thuộc tính này sẽ giống với pill.
square
Nút hình vuông. Nếu được dùng cho loại nút standard, thì thuộc tính này sẽ giống với rectangular.

logo_alignment

Vị trí căn chỉnh của biểu trưng Google. Giá trị mặc định là left. Thuộc tính này chỉ áp dụng cho loại nút standard. Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
chuỗi Không bắt buộc logo_alignment: "center"

Bảng sau đây liệt kê các cách căn chỉnh hiện có và nội dung mô tả:

logo_alignment
left
Căn trái biểu trưng Google.
center
Căn giữa biểu trưng Google.

chiều rộng

Chiều rộng tối thiểu của nút, tính bằng pixel. Chiều rộng tối đa là 400 pixel.

Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
chuỗi Không bắt buộc width: "400"

locale

Không bắt buộc. Hiển thị văn bản trên nút bằng ngôn ngữ được chỉ định, nếu không thì mặc định là Tài khoản Google hoặc các chế độ cài đặt của trình duyệt của người dùng. Thêm tham số hl và mã ngôn ngữ vào lệnh src khi tải thư viện, ví dụ: gsi/client?hl=<iso-639-code>.

Nếu bạn không đặt chính sách này, thì ngôn ngữ mặc định của trình duyệt hoặc lựa chọn ưu tiên của người dùng trong phiên hoạt động trên Google sẽ được sử dụng. Do đó, những người dùng khác nhau có thể thấy các phiên bản nút được bản địa hoá khác nhau và có thể có kích thước khác nhau.

Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
chuỗi Không bắt buộc locale: "zh_CN"

click_listener

Bạn có thể xác định một hàm JavaScript để gọi khi người dùng nhấp vào nút Đăng nhập bằng Google bằng cách sử dụng thuộc tính click_listener.

  google.accounts.id.renderButton(document.getElementById("signinDiv"), {
      theme: 'outline',
      size: 'large',
      click_listener: onClickHandler
    });

  
  function onClickHandler(){
    console.log("Sign in with Google button clicked...")
  }
  

Trong ví dụ này, thông báo Đã nhấp vào nút Đăng nhập bằng Google... sẽ được ghi lại vào bảng điều khiển khi người dùng nhấp vào nút Đăng nhập bằng Google.

tiểu bang

Không bắt buộc, vì nhiều nút Đăng nhập bằng Google có thể được hiển thị trên cùng một trang, nên bạn có thể chỉ định cho mỗi nút một chuỗi riêng biệt. Chuỗi này sẽ được trả về cùng với mã thông báo giá trị nhận dạng để bạn có thể xác định nút mà người dùng đã nhấp vào để đăng nhập.

Hãy xem bảng sau để biết thêm thông tin:

Loại Bắt buộc Ví dụ
chuỗi Không bắt buộc data-state: "button 1"

Loại dữ liệu: Thông tin xác thực

Khi hàm native_callback được gọi, một đối tượng Credential sẽ được truyền dưới dạng tham số. Bảng sau đây liệt kê các trường có trong đối tượng:

Trường
id Xác định người dùng.
password Mật khẩu

Phương thức: google.accounts.id.disableAutoSelect

Khi người dùng đăng xuất khỏi trang web của bạn, bạn cần gọi phương thức google.accounts.id.disableAutoSelect để ghi lại trạng thái trong cookie. Điều này giúp tránh vòng lặp chết trong trải nghiệm người dùng. Hãy xem đoạn mã sau đây của phương thức:

google.accounts.id.disableAutoSelect()

Ví dụ về mã sau đây triển khai phương thức google.accounts.id.disableAutoSelect bằng hàm onSignout():

<script>
  function onSignout() {
    google.accounts.id.disableAutoSelect();
  }
</script>

Phương thức: google.accounts.id.storeCredential

Phương thức này là một trình bao bọc cho phương thức store() của API trình quản lý thông tin xác thực tích hợp sẵn của trình duyệt. Do đó, bạn chỉ có thể dùng đối tượng này để lưu trữ thông tin xác thực bằng mật khẩu. Hãy xem ví dụ về mã sau đây của phương thức:

google.accounts.id.storeCredential(Credential, callback)

Ví dụ về mã sau đây triển khai phương thức google.accounts.id.storeCredential bằng hàm onSignIn():

<script>
  function onSignIn() {
    let cred = {id: '...', password: '...'};
    google.accounts.id.storeCredential(cred);
  }
</script>

Phương thức: google.accounts.id.cancel

Bạn có thể huỷ quy trình Một lần chạm nếu xoá lời nhắc khỏi DOM của bên Relying Party. Thao tác huỷ sẽ bị bỏ qua nếu thông tin xác thực đã được chọn. Hãy xem ví dụ về mã sau đây của phương thức:

google.accounts.id.cancel()

Ví dụ về mã sau đây triển khai phương thức google.accounts.id.cancel() bằng hàm onNextButtonClicked():

<script>
  function onNextButtonClicked() {
    google.accounts.id.cancel();
    showPasswordPage();
  }
</script>

Lệnh gọi lại tải thư viện: onGoogleLibraryLoad

Bạn có thể đăng ký lệnh gọi lại onGoogleLibraryLoad. Hàm này được thông báo sau khi thư viện JavaScript Đăng nhập bằng Google được tải:

window.onGoogleLibraryLoad = () => {
    ...
};

Lệnh gọi lại này chỉ là lối tắt cho lệnh gọi lại window.onload. Không có sự khác biệt về hành vi.

Ví dụ về mã sau đây triển khai lệnh gọi lại onGoogleLibraryLoad:

<script>
  window.onGoogleLibraryLoad = () => {
   google.accounts.id.initialize({
     ...
   });
   google.accounts.id.prompt();
  };
</script>

Phương thức: google.accounts.id.revoke

Phương thức google.accounts.id.revoke thu hồi quyền sử dụng OAuth dùng để chia sẻ mã thông báo giá trị nhận dạng cho người dùng được chỉ định. Hãy xem đoạn mã sau đây của phương thức: javascript google.accounts.id.revoke(login_hint, callback)

Tham số Loại Mô tả
login_hint chuỗi Địa chỉ email hoặc mã nhận dạng duy nhất của Tài khoản Google của người dùng. Mã nhận dạng là thuộc tính sub của tải trọng thông tin xác thực.
callback hàm Trình xử lý RevocationResponse không bắt buộc.

Mã mẫu sau đây cho biết cách sử dụng phương thức revoke với một mã nhận dạng.

  google.accounts.id.revoke('1618033988749895', done => {
    console.log(done.error);
  });

Kiểu dữ liệu: RevocationResponse

Khi hàm callback được gọi, một đối tượng RevocationResponse sẽ được truyền dưới dạng tham số. Bảng sau đây liệt kê các trường có trong đối tượng phản hồi thu hồi:

Trường
successful Trường này là giá trị trả về của lệnh gọi phương thức.
error Trường này có thể chứa thông báo phản hồi lỗi chi tiết.

thành công

Trường này là một giá trị boolean được đặt thành true nếu lệnh gọi phương thức thu hồi thành công hoặc false nếu không thành công.

error

Trường này là một giá trị chuỗi và chứa thông báo lỗi chi tiết nếu lệnh gọi phương thức thu hồi không thành công, trường này không được xác định khi thành công.