Hướng dẫn này thảo luận về việc thư viện nền tảng Đăng nhập bằng Google sử dụng các API FedCM. Các chủ đề bao gồm Tiến trình và Các bước tiếp theo để cập nhật thư viện có khả năng tương thích ngược, cách Tiến hành đánh giá tác động và xác minh việc đăng nhập của người dùng vẫn hoạt động như dự kiến, cũng như hướng dẫn cập nhật ứng dụng web nếu cần. Các lựa chọn để Quản lý giai đoạn chuyển đổi cùng với cách Yêu cầu trợ giúp cũng được đề cập.
Trạng thái của thư viện
Mọi ứng dụng web mới đều bị chặn sử dụng thư viện nền tảng Đăng nhập bằng Google không còn được dùng nữa, trong khi các ứng dụng sử dụng thư viện này có thể tiếp tục cho đến khi có thông báo mới. Chúng tôi chưa xác định ngày ngừng hoạt động (kết thúc) cuối cùng cho thư viện này. Hãy xem phần Ngừng hỗ trợ và ngừng hoạt động để biết thêm thông tin.
Bản cập nhật tương thích ngược sẽ thêm API FedCM vào thư viện Đăng nhập bằng Google. Mặc dù hầu hết các thay đổi đều liền mạch, nhưng bản cập nhật này sẽ có sự khác biệt đối với lời nhắc người dùng, permissions-policy của iframe và Chính sách bảo mật nội dung (CSP). Những thay đổi này có thể ảnh hưởng đến ứng dụng web của bạn và đòi hỏi bạn phải thay đổi mã xử lý ứng dụng cũng như cấu hình trang web.
Trong thời gian chuyển đổi, một tuỳ chọn cấu hình sẽ kiểm soát việc có sử dụng API FedCM trong quá trình đăng nhập của người dùng hay không.
Sau giai đoạn chuyển đổi, mọi ứng dụng web sử dụng thư viện Đăng nhập bằng Google đều bắt buộc phải sử dụng API FedCM.
Dòng thời gian
Lần cập nhật gần đây nhất: Tháng 9 năm 2024
Sau đây là các ngày và thay đổi ảnh hưởng đến hành vi đăng nhập của người dùng:
- Tháng 3 năm 2023 Ngừng hỗ trợ thư viện nền tảng Đăng nhập bằng Google.
- Giai đoạn chuyển đổi tháng 7 năm 2024 bắt đầu và Google sẽ hỗ trợ thêm thư viện nền tảng Đăng nhập bằng Google cho API FedCM. Theo mặc định, Google kiểm soát tỷ lệ phần trăm số yêu cầu đăng nhập của người dùng bằng FedCM trong thời gian này. Các ứng dụng web có thể ghi đè hành vi này một cách rõ ràng bằng tham số
use_fedcm
. - Tháng 3 năm 2025, bắt buộc phải sử dụng các API FedCM của thư viện nền tảng Đăng nhập bằng Google. Sau đó, tham số
use_fedcm
sẽ bị bỏ qua và tất cả yêu cầu đăng nhập của người dùng đều sử dụng FedCM.
Các bước tiếp theo
Có ba cách bạn có thể chọn để làm theo:
- Tiến hành đánh giá tác động và cập nhật ứng dụng web nếu cần. Phương pháp này đánh giá xem các tính năng yêu cầu thay đổi đối với ứng dụng web có đang được sử dụng hay không. Bạn có thể xem hướng dẫn trong phần tiếp theo của tài liệu hướng dẫn này.
- Chuyển sang thư viện Dịch vụ nhận dạng của Google (GIS). Bạn nên chuyển sang thư viện đăng nhập mới nhất và được hỗ trợ. Hãy làm theo hướng dẫn này.
- Không làm gì cả. Ứng dụng web của bạn sẽ tự động được cập nhật khi thư viện Đăng nhập bằng Google chuyển sang API FedCM để người dùng đăng nhập. Đây là cách làm ít tốn công sức nhất, nhưng có một số rủi ro người dùng không thể đăng nhập vào ứng dụng web của bạn.
Tiến hành đánh giá tác động
Hãy làm theo các hướng dẫn này để xác định xem ứng dụng web của bạn có thể được cập nhật liền mạch thông qua bản cập nhật tương thích ngược hay không hoặc liệu có cần thay đổi để tránh việc người dùng không thể đăng nhập hay không khi thư viện nền tảng Đăng nhập bằng Google sử dụng đầy đủ API FedCM.
Thiết lập
Bạn cần có API trình duyệt và phiên bản mới nhất của thư viện nền tảng Đăng nhập bằng Google để sử dụng FedCM trong quá trình người dùng đăng nhập.
Trước khi tìm hiểu thêm:
- Cập nhật lên phiên bản mới nhất của Chrome dành cho máy tính. Chrome cho Android yêu cầu bản phát hành M128 trở lên và không thể kiểm thử bằng các phiên bản cũ hơn.
Mở
chrome://flags
và đặt các tính năng sau thành các giá trị này:- #feedcm-authz Đã bật
- #tracking-protection-3pcd Đã bật
- #third-party-cookie-deprecation-trial Tắt
- #tpcd-metadata-grants Tắt
- #tpcd-heuristics-grants Tắt
rồi khởi động lại Chrome.
Đặt
use_fedcm
thànhtrue
khi khởi chạy thư viện nền tảng Đăng nhập bằng Google trong ứng dụng web. Thông thường, quá trình khởi chạy sẽ có dạng như sau:gapi.client.init({use_fedcm: true})
hoặcgapi.auth2.init({use_fedcm: true})
hoặcgapi.auth2.authorize({use_fedcm: true})
.
Làm mất hiệu lực các phiên bản lưu trong bộ nhớ đệm của thư viện nền tảng Đăng nhập bằng Google. Thông thường, bạn không cần thực hiện bước này vì phiên bản mới nhất của thư viện được tải trực tiếp xuống trình duyệt bằng cách đưa
api.js
,client.js
hoặcplatform.js
vào thẻ<script src>
(yêu cầu có thể sử dụng bất kỳ tên gói nào trong số này cho thư viện).Xác nhận chế độ cài đặt OAuth cho mã ứng dụng khách OAuth:
- Mở trang Thông tin xác thực của Google API Console
Xác minh URI của trang web có trong Nguồn gốc JavaScript được uỷ quyền. URI chỉ bao gồm giao thức và tên máy chủ đủ điều kiện. Ví dụ:
https://www.example.com
.Bạn có thể tuỳ ý trả về thông tin xác thực bằng cách dùng lệnh chuyển hướng đến một điểm cuối mà bạn lưu trữ thay vì thông qua lệnh gọi lại JavaScript. Trong trường hợp này, hãy xác minh rằng URI chuyển hướng của bạn có trong URI chuyển hướng được phép. URI chuyển hướng bao gồm giao thức, tên máy chủ đủ điều kiện và đường dẫn, đồng thời phải tuân thủ Quy tắc xác thực URI chuyển hướng. Ví dụ:
https://www.example.com/auth-receiver
Thử nghiệm
Sau khi làm theo hướng dẫn trong phần Thiết lập:
- Đóng tất cả cửa sổ Ẩn danh hiện có trên Chrome rồi mở một cửa sổ Ẩn danh mới. Thao tác này sẽ xoá mọi nội dung hoặc cookie được lưu vào bộ nhớ đệm.
- Tải trang đăng nhập của người dùng và thử đăng nhập.
Hãy làm theo hướng dẫn trong các phần sau của hướng dẫn này để xác định và khắc phục các vấn đề đã biết:
Tìm mọi lỗi hoặc cảnh báo trong Console liên quan đến thư viện Đăng nhập bằng Google.
Lặp lại quy trình này cho đến khi không xảy ra lỗi và bạn có thể đăng nhập thành công. Bạn có thể xác minh một lượt đăng nhập thành công bằng cách xác nhận rằng
BasicProfile.getEmail()
trả về địa chỉ email của bạn vàGoogleUser.isSignedIn()
làTrue
.
Tìm yêu cầu của thư viện Đăng nhập bằng Google
Kiểm tra xem có cần thay đổi về permissions-policy và Chính sách bảo mật nội dung hay không bằng cách kiểm tra yêu cầu đối với thư viện nền tảng Đăng nhập bằng Google. Để thực hiện việc này, hãy xác định yêu cầu bằng tên và nguồn gốc của thư viện:
- Trong Chrome, hãy mở bảng điều khiển Mạng của Công cụ của Chrome cho nhà phát triển rồi tải lại trang.
- Sử dụng các giá trị trong cột Miền và Tên để xác định yêu cầu thư viện:
- Miền là
apis.google.com
và - Tên là
api.js
,client.js
hoặcplatform.js
. Giá trị cụ thể của Tên phụ thuộc vào gói thư viện mà tài liệu yêu cầu.
- Miền là
Ví dụ: lọc trên apis.google.com
trong cột Miền và platform.js
trong cột Tên.
Kiểm tra chính sách quyền của iframe
Trang web của bạn có thể sử dụng thư viện nền tảng Đăng nhập bằng Google bên trong một iframe trên nhiều nguồn gốc. Nếu có, bạn cần cập nhật.
Sau khi làm theo hướng dẫn Tìm yêu cầu thư viện Đăng nhập bằng Google, hãy chọn yêu cầu thư viện Đăng nhập bằng Google trong bảng điều khiển DevTools Network (Mạng) và tìm tiêu đề Sec-Fetch-Site
trong mục Request Headers (Yêu cầu tiêu đề) trong thẻ Headers (Tiêu đề). Nếu giá trị của tiêu đề là:
same-site
hoặcsame-origin
thì các chính sách nhiều nguồn gốc sẽ không áp dụng và bạn không cần thực hiện thay đổi nào.- Bạn có thể cần thay đổi
cross-origin
nếu đang sử dụng iframe.
Cách xác nhận xem có iframe hay không:
- Chọn bảng điều khiển Phần tử trong Công cụ của Chrome cho nhà phát triển và
- Sử dụng tổ hợp phím Ctrl-F để tìm iframe trong tài liệu.
Nếu tìm thấy một iframe, hãy kiểm tra tài liệu để tìm các lệnh gọi đến hàm gapi.auth2 hoặc lệnh script src
tải thư viện Đăng nhập bằng Google trong iframe. Nếu trường hợp này xảy ra:
- Thêm chính sách quyền
allow="identity-credentials-get"
vào iframe mẹ.
Lặp lại quy trình này cho mọi iframe trong tài liệu. Bạn có thể lồng các iframe, vì vậy, hãy nhớ thêm lệnh allow vào tất cả iframe gốc xung quanh.
Kiểm tra Chính sách bảo mật nội dung
Nếu trang web của bạn sử dụng Chính sách bảo mật nội dung, bạn có thể cần cập nhật CSP để cho phép sử dụng thư viện Đăng nhập bằng Google.
Sau khi làm theo hướng dẫn Tìm yêu cầu thư viện Đăng nhập bằng Google, hãy chọn yêu cầu thư viện Đăng nhập bằng Google trong bảng điều khiển Mạng của Công cụ cho nhà phát triển và tìm tiêu đề Content-Security-Policy
trong phần Tiêu đề phản hồi của thẻ Tiêu đề.
Nếu không tìm thấy tiêu đề, bạn không cần thay đổi gì. Nếu không, hãy kiểm tra xem có lệnh nào trong số này được xác định trong tiêu đề CSP hay không. Hãy cập nhật các lệnh đó bằng cách:
Thêm
https://apis.google.com/js/
,https://accounts.google.com/gsi/
vàhttps://acounts.google.com/o/fedcm/
vào bất kỳ lệnhconnect-src
,default-src
hoặcframe-src
nào.Thêm
https://apis.google.com/js/bundle-name.js
vào lệnhscript-src
. Thay thếbundle-name.js
bằngapi.js
,client.js
hoặcplatform.js
dựa trên gói thư viện yêu cầu tài liệu.
Kiểm tra các thay đổi về lời nhắc của người dùng
Có một số điểm khác biệt đối với hành vi nhắc người dùng, FedCM thêm một hộp thoại phương thức hiển thị do trình duyệt hiển thị và cập nhật các yêu cầu kích hoạt người dùng.
Hộp thoại phương thức
Kiểm tra bố cục của trang web để xác nhận rằng hộp thoại phương thức của trình duyệt có thể phủ lên và tạm thời che khuất nội dung cơ bản một cách an toàn. Nếu không, bạn có thể cần điều chỉnh bố cục hoặc vị trí của một số phần tử trên trang web.
Kích hoạt người dùng
FedCM bao gồm các yêu cầu mới về việc kích hoạt người dùng. Việc nhấn nút hoặc nhấp vào đường liên kết là ví dụ về cử chỉ của người dùng cho phép nguồn gốc của bên thứ ba đưa ra yêu cầu mạng hoặc lưu trữ dữ liệu. Với FedCM, trình duyệt sẽ nhắc người dùng đồng ý khi:
- người dùng đăng nhập vào ứng dụng web lần đầu bằng một phiên bản trình duyệt mới hoặc
GoogleAuth.signIn
sẽ được gọi.
Hiện nay, nếu trước đây người dùng từng đăng nhập vào trang web của bạn, thì bạn có thể lấy thông tin đăng nhập của người dùng đó khi khởi động thư viện Đăng nhập bằng Google bằng gapi.auth2.init
mà không cần người dùng phải tương tác thêm. Bạn không thể thực hiện việc này nữa trừ phi người dùng đã trải qua quy trình đăng nhập FedCM ít nhất một lần.
Bằng cách chọn sử dụng FedCM và gọi GoogleAuth.signIn
, vào lần tiếp theo người dùng đó truy cập vào trang web của bạn, gapi.auth2.init
có thể lấy thông tin đăng nhập của người dùng trong quá trình khởi chạy mà không cần người dùng tương tác.
Các trường hợp sử dụng phổ biến
Tài liệu dành cho nhà phát triển về thư viện Đăng nhập bằng Google bao gồm hướng dẫn và mẫu mã cho các trường hợp sử dụng phổ biến. Phần này thảo luận về cách FedCM ảnh hưởng đến hành vi của các nút này.
Tích hợp tính năng Đăng nhập bằng Google vào ứng dụng web
Trong bản minh hoạ này, một phần tử
<div>
và một lớp hiển thị nút, và đối với người dùng đã đăng nhập, sự kiệnonload
của trang sẽ trả về thông tin xác thực của người dùng. Người dùng cần tương tác để đăng nhập và thiết lập một phiên mới.Lớp
g-signin2
sẽ thực hiện việc khởi chạy thư viện bằng cách gọigapi.load
vàgapi.auth2.init
.Một cử chỉ của người dùng, sự kiện
onclick
của phần tử<div>
, gọiauth2.signIn
trong khi đăng nhập hoặcauth2.signOut
khi đăng xuất.Tạo nút Đăng nhập bằng Google tuỳ chỉnh
Trong bản minh hoạ một, các thuộc tính tuỳ chỉnh được dùng để kiểm soát giao diện của nút đăng nhập. Đối với người dùng đã đăng nhập, trang
onload
trả về thông tin đăng nhập của người dùng. Người dùng phải tương tác để đăng nhập và thiết lập một phiên mới.Quá trình khởi chạy thư viện được thực hiện thông qua một sự kiện
onload
cho thư việnplatform.js
và nút này dogapi.signin2.render
hiển thị.Một cử chỉ của người dùng, nhấn nút đăng nhập, gọi
auth2.signIn
.Trong bản minh hoạ hai, một phần tử
<div>
, các kiểu CSS và một đồ hoạ tuỳ chỉnh được dùng để kiểm soát giao diện của nút đăng nhập. Bạn phải có sự tương tác của người dùng để đăng nhập và thiết lập một phiên mới.Quá trình khởi chạy thư viện được thực hiện khi tải tài liệu bằng cách sử dụng một hàm bắt đầu gọi
gapi.load
,gapi.auth2.init
vàgapi.auth2.attachClickHandler
.Cử chỉ của người dùng, sự kiện
onclick
của phần tử<div>
, gọiauth2.signIn
bằngauth2.attachClickHandler
trong quá trình đăng nhập hoặcauth2.signOut
khi đăng xuất.Theo dõi trạng thái phiên của người dùng
Trong bản minh hoạ này, thao tác nhấn nút được dùng để người dùng đăng nhập và đăng xuất. Người dùng phải tương tác để đăng nhập và thiết lập phiên mới.
Bạn có thể khởi chạy thư viện bằng cách gọi trực tiếp
gapi.load
,gapi.auth2.init
vàgapi.auth2.attachClickHandler()
sau khi tảiplatform.js
bằngscript src
.Cử chỉ của người dùng, sự kiện
onclick
của phần tử<div>
, gọiauth2.signIn
bằngauth2.attachClickHandler
trong khi đăng nhập hoặcauth2.signOut
khi đăng xuất.-
Trong bản minh hoạ này, thao tác nhấn nút được dùng để yêu cầu các phạm vi OAuth 2.0 bổ sung, lấy mã truy cập mới và đối với người dùng đã đăng nhập, sự kiện
onload
của trang sẽ trả về thông tin xác thực của người dùng. Người dùng phải tương tác để đăng nhập và thiết lập một phiên mới.Quá trình khởi chạy thư viện được sự kiện
onload
cho thư việnplatform.js
thực hiện thông qua lệnh gọi đếngapi.signin2.render
.Một cử chỉ của người dùng, nhấp vào phần tử
<button>
, sẽ kích hoạt yêu cầu về các phạm vi OAuth 2.0 bổ sung bằng cách sử dụnggoogleUser.grant
hoặcauth2.signOut
khi đăng xuất. Tích hợp tính năng Đăng nhập bằng Google bằng trình nghe
Trong bản minh hoạ này, đối với người dùng đã đăng nhập, sự kiện
onload
của trang sẽ trả về thông tin xác thực của người dùng. Người dùng phải tương tác để đăng nhập và thiết lập một phiên mới.Quá trình khởi chạy thư viện được thực hiện khi tải tài liệu bằng cách sử dụng hàm bắt đầu gọi
gapi.load
,gapi.auth2.init
vàgapi.auth2.attachClickHandler
. Tiếp theo,auth2.isSignedIn.listen
vàauth2.currentUser.listen
được dùng để thiết lập thông báo về các thay đổi đối với trạng thái phiên. Cuối cùng,auth2.SignIn
được gọi để trả về thông tin xác thực cho người dùng đã đăng nhập.Cử chỉ của người dùng, sự kiện
onclick
của phần tử<div>
, gọiauth2.signIn
bằngauth2.attachClickHandler
trong khi đăng nhập hoặcauth2.signOut
khi đăng xuất.Tính năng Đăng nhập bằng Google cho các ứng dụng phía máy chủ
Trong bản minh hoạ này, cử chỉ của người dùng được dùng để yêu cầu mã xác thực OAuth 2.0 và lệnh gọi lại JS thực hiện lệnh gọi AJAX để gửi phản hồi đến máy chủ phụ trợ để xác minh.
Quá trình khởi chạy thư viện được thực hiện bằng cách sử dụng một sự kiện
onload
cho thư việnplatform.js
. Thư viện này sử dụng một hàm bắt đầu để gọigapi.load
vàgapi.auth2.init
.Một cử chỉ của người dùng, nhấp vào một phần tử
<button>
, sẽ kích hoạt yêu cầu mã uỷ quyền bằng cách gọiauth2.grantOfflineAccess
.-
FedCM yêu cầu sự đồng ý đối với mọi phiên bản trình duyệt, ngay cả khi người dùng Android đã đăng nhập, vẫn cần sự đồng ý một lần.
Quản lý giai đoạn chuyển đổi
Trong giai đoạn chuyển đổi, tỷ lệ phần trăm đăng nhập của người dùng có thể sử dụng FedCM. Tỷ lệ phần trăm chính xác có thể khác nhau và có thể thay đổi theo thời gian. Theo mặc định, Google kiểm soát số lượng yêu cầu đăng nhập sử dụng FedCM, nhưng bạn có thể chọn sử dụng hoặc không sử dụng FedCM trong thời gian chuyển đổi. Khi kết thúc giai đoạn chuyển đổi, FedCM sẽ trở thành bắt buộc và được dùng cho tất cả các yêu cầu đăng nhập.
Khi chọn sử dụng, người dùng sẽ được đưa đến quy trình đăng nhập FedCM, còn khi chọn không sử dụng, người dùng sẽ được đưa đến quy trình đăng nhập hiện có. Bạn có thể kiểm soát hành vi này bằng cách sử dụng tham số use_fedcm
.
Chọn sử dụng
Bạn nên kiểm soát việc tất cả hay một số lượt đăng nhập vào trang web của mình có sử dụng API FedCM hay không. Để thực hiện việc này, hãy đặt use_fedcm
thành true
khi khởi chạy thư viện nền tảng. Yêu cầu đăng nhập của người dùng sử dụng các API FedCM trong trường hợp này.
Chọn không sử dụng
Trong thời gian chuyển đổi, một tỷ lệ phần trăm số lần đăng nhập của người dùng vào trang web của bạn sẽ sử dụng API FedCM theo mặc định. Nếu cần thêm thời gian để thực hiện các thay đổi đối với ứng dụng của mình, bạn có thể tạm thời chọn không sử dụng API FedCM. Để thực hiện việc này, hãy đặt use_fedcm
thành false
khi khởi chạy thư viện nền tảng. Yêu cầu đăng nhập của người dùng sẽ không sử dụng API FedCM trong trường hợp này.
Sau khi áp dụng bắt buộc, mọi chế độ cài đặt use_fedcm
sẽ bị thư viện nền tảng Đăng nhập bằng Google bỏ qua.
Nhận trợ giúp
Tìm kiếm hoặc đặt câu hỏi trên StackOverflow bằng thẻ google-signin.