Giới thiệu
Đăng nhập bằng Google (SiwG) là một cách nhanh chóng và an toàn để người dùng đăng nhập vào ứng dụng hoặc trang web của bạn. Việc triển khai đúng cách không chỉ đơn giản hoá quy trình đăng ký của người dùng mà còn tăng cường tính bảo mật cho ứng dụng của bạn. Tài liệu này trình bày các phương pháp hay nhất để tích hợp tính năng Đăng nhập bằng Google trên các nền tảng Web, Android và iOS. Tài liệu này chỉ tập trung vào việc xác thực. Uỷ quyền nằm ngoài phạm vi của tài liệu này.
Danh sách kiểm tra các mốc quan trọng trong quá trình tích hợp
Danh sách kiểm tra này cung cấp lộ trình tổng quan để hướng dẫn bạn thực hiện quy trình tích hợp tính năng Đăng nhập bằng Google. Quy trình này được chia thành các giai đoạn chính, từ thiết lập ban đầu đến khi phát hành công khai. Hãy sử dụng danh sách này để theo dõi tiến trình và nhấp vào các đường liên kết để chuyển đến hướng dẫn chi tiết cho từng cột mốc.
Giai đoạn 0: Bắt đầu (không bắt buộc)
Bắt đầu quá trình tích hợp bằng các lớp học lập trình thực tế từng bước dành cho nhà phát triển.
Web: Hoàn tất lớp học lập trình về Một lần nhấn và nút Đăng nhập bằng Google để tạo một quy trình tích hợp web cơ bản.
Android: Hoàn tất lớp học lập trình Android để tìm hiểu các kiến thức cơ bản về Credential Manager của Android.
iOS: Hoàn thành lớp học lập trình iOS để tìm hiểu về SDK dành cho iOS.
Giai đoạn 1: Cấu hình dự án và thương hiệu trên Google Cloud
Đảm bảo dự án của bạn được thiết lập để thành công ngay từ đầu.
Cấu trúc các dự án trên Google Cloud cho nhiều môi trường và thương hiệu.
Hoàn tất cấu hình màn hình đồng ý OAuth bằng tất cả thông tin bắt buộc về thương hiệu và thông tin hỗ trợ.
Tạo loại mã ứng dụng khách OAuth phù hợp cho từng nền tảng (Web, Android, iOS).
Giai đoạn 2: Phát triển cốt lõi: giao diện người dùng và phần phụ trợ
Xây dựng logic máy chủ bảo mật và trải nghiệm người dùng dành riêng cho từng nền tảng.
Trong quá trình phát triển giao diện người dùng:
Xem xét và áp dụng các phương pháp hay nhất chung về Trải nghiệm người dùng (UX) để tối đa hoá mức độ chấp nhận và niềm tin của người dùng.
Web: Sử dụng thư viện JavaScript chính thức và tích hợp cả quy trình Nút và quy trình Một lần chạm.
Android: Sử dụng SDK Android chính thức để tích hợp.
iOS: Sử dụng SDK chính thức dành cho iOS để tích hợp.
Trong quá trình phát triển phần phụ trợ:
Triển khai quy trình xác thực phụ trợ an toàn đối với mã nhận dạng Google.
Sử dụng xác nhận quyền sở hữu sub làm giá trị nhận dạng người dùng duy nhất và vĩnh viễn trong hệ thống của bạn.
Lập kế hoạch cho phạm vi phân tách việc xác thực và uỷ quyền nếu có thể.
Giai đoạn 3: Tăng cường bảo mật và ra mắt phiên bản chính thức
Đảm bảo rằng quá trình tích hợp của bạn an toàn, tuân thủ và sẵn sàng cho việc phát hành công khai.
Xem xét và triển khai các phương pháp bảo mật hay nhất.
Hoàn tất quy trình Xác minh ứng dụng OAuth trước khi ra mắt.
Đảm bảo ứng dụng của bạn xử lý chính xác việc thu hồi mã thông báo khi người dùng xoá tài khoản.
Các phương pháp chung hay nhất (tất cả các nền tảng)
Các phương pháp này áp dụng bất kể nền tảng mà bạn đang phát triển. Nhà phát triển cũng nên xem Chính sách chung về OAuth 2.0 để đảm bảo tuân thủ đầy đủ.
Thiết lập dự án trên Google Cloud
Phần này trình bày các phương pháp hay nhất để cấu trúc các dự án Google Cloud và thiết lập ứng dụng OAuth nhằm đảm bảo tính bảo mật và tuân thủ quy tắc về thương hiệu.
Sử dụng các dự án riêng biệt cho giai đoạn kiểm thử và phát hành chính thức
Vì một số chính sách của Google chỉ áp dụng cho các ứng dụng phát hành công khai, nên bạn phải tạo các dự án riêng biệt trong Google Cloud Console cho các môi trường triển khai khác nhau, chẳng hạn như môi trường phát triển, môi trường dàn dựng và môi trường phát hành công khai. Hãy xem trang này để biết thêm thông tin.
Sử dụng các dự án riêng biệt cho từng thương hiệu hoặc miền
Nếu tổ chức của bạn quản lý nhiều ứng dụng có thương hiệu riêng biệt, thì mỗi thương hiệu phải có Dự án Google Cloud riêng. Thông tin mà người dùng nhìn thấy trên màn hình đồng ý (chẳng hạn như tên ứng dụng, biểu trưng, email hỗ trợ và các đường liên kết đến Điều khoản dịch vụ và Chính sách quyền riêng tư) được định cấu hình ở cấp dự án. Điều này có nghĩa là tất cả mã ứng dụng OAuth được tạo trong một dự án sẽ dùng chung một thương hiệu. Việc cấp cho mỗi thương hiệu một dự án riêng đảm bảo rằng người dùng sẽ thấy thông tin pháp lý và thông tin về thương hiệu chính xác cho ứng dụng cụ thể mà họ đang sử dụng.
Cung cấp một email hỗ trợ chung
Địa chỉ email hỗ trợ người dùng sẽ xuất hiện công khai trên màn hình xin phép bằng OAuth. Để duy trì tính chuyên nghiệp và đảm bảo tính liên tục, hãy luôn định cấu hình một email hỗ trợ chung (ví dụ:
support@yourdomain.com) trong cấu hình màn hình đồng ý OAuth của Dự án trên Google Cloud thay vì địa chỉ email của từng nhân viên. Hãy xem trang này để biết thêm thông tin chi tiết.Ứng dụng OAuth cho mỗi nền tảng
Bạn nên tạo một ứng dụng khách OAuth riêng biệt cho mỗi nền tảng mà ứng dụng của bạn chạy (ví dụ: Web, Android, iOS), tất cả đều nằm trong cùng một dự án trên Google Cloud. Việc sử dụng đúng loại ứng dụng cho từng nền tảng là điều quan trọng vì 2 lý do chính:
- Tăng cường bảo mật: Mỗi loại ứng dụng khách đều cho phép các tính năng bảo mật dành riêng cho nền tảng. Ví dụ: một ứng dụng Android có thể bị khoá theo tên gói và chứng chỉ ký, ngăn chặn việc sử dụng mã ứng dụng khách của bạn mà không được phép.
- Chức năng phù hợp: Đảm bảo ứng dụng của bạn tích hợp chính xác với các SDK và tính năng dành riêng cho nền tảng, chẳng hạn như Credential Manager trên Android hoặc SDK Đăng nhập bằng Google cho iOS.
Cấu trúc này cũng giúp đơn giản hoá trải nghiệm người dùng. Vì sự đồng ý được xử lý ở cấp dự án trên Google Cloud, nên người dùng chỉ cần cấp sự đồng ý một lần cho ứng dụng của bạn trên tất cả các nền tảng. Để biết thêm thông tin, hãy xem các chính sách chính thức về OAuth 2.0.
Hoàn tất quy trình xác minh ứng dụng OAuth
Để ứng dụng phát hành công khai hiển thị tên và biểu trưng, ứng dụng đó phải được xác minh. Loại xác minh phụ thuộc vào dữ liệu mà bạn yêu cầu người dùng cung cấp.
- Tính năng Đăng nhập bằng Google chỉ yêu cầu phạm vi xác thực (
email,profilevàopenid), nên sẽ phải trải qua quy trình Xác minh thương hiệu đơn giản hơn. Quy trình này thường diễn ra nhanh hơn và tập trung vào việc xác nhận danh tính thương hiệu của bạn.
Để giúp bạn lên kế hoạch cho tiến trình ra mắt, Google cung cấp thông tin chi tiết về các loại quy trình xác minh và thời gian xem xét dự kiến. Để biết thêm thông tin về các chính sách xác minh, hãy xem Trung tâm trợ giúp về quy trình xác minh ứng dụng OAuth.
- Tính năng Đăng nhập bằng Google chỉ yêu cầu phạm vi xác thực (
Bảo mật và xử lý mã thông báo
Phần này tập trung vào các yêu cầu về thời gian chạy và các biện pháp bảo mật mà nhà phát triển phải triển khai trên máy chủ phụ trợ của họ.
Tích hợp mã nhận dạng Google với phần phụ trợ của bạn
- Xác minh mã thông báo nhận dạng: Luôn xác minh tính toàn vẹn của mã thông báo nhận dạng của Google trên máy chủ phụ trợ. Đừng bao giờ tin tưởng một mã thông báo chỉ vì mã thông báo đó được gửi từ ứng dụng của bạn. Bạn nên dùng một thư viện ứng dụng Google API để xác minh này. Hãy xem phần Xác minh mã thông báo nhận dạng của Google ở phía máy chủ để biết thêm thông tin chi tiết.
- Sử dụng xác nhận quyền sở hữu
sub: Chỉ sử dụng trường Mã thông báo cho mã nhận dạng trên Googlesublàm giá trị nhận dạng cho người dùng vì mã này là duy nhất và ổn định trong tất cả Tài khoản Google và không bao giờ được dùng lại. Bạn nên lưu trữ trườngsubvà liên kết trường này với người dùng trong hệ thống quản lý tài khoản của bạn. Mặc dù bạn có thể sử dụng địa chỉ email trong mã thông báo nhận dạng để kiểm tra xem người dùng có tài khoản hiện có hay không, nhưng đừng sử dụng địa chỉ email làm giá trị nhận dạng vì một Tài khoản Google có thể có nhiều địa chỉ email tại các thời điểm khác nhau.
Thu hồi mã thông báo khi xoá tài khoản
Bạn nên cung cấp cho người dùng đăng nhập bằng Google khả năng ngắt kết nối Tài khoản Google của họ với ứng dụng của bạn. Nếu người dùng chọn xoá tài khoản của họ, bạn phải thu hồi tất cả quyền truy cập và mã làm mới mà ứng dụng của bạn đã nhận được.
Để biết thông tin chi tiết về việc thu hồi mã thông báo phía máy khách, hãy truy cập vào tài liệu Web, Android, iOS. Để thu hồi phía máy chủ, hãy truy cập vào phần Sử dụng OAuth 2.0 cho ứng dụng máy chủ web.
Tách biệt quy trình xác thực với quy trình uỷ quyền
SDK Đăng nhập bằng Google chỉ yêu cầu các phạm vi cần thiết để xác thực. Nếu ứng dụng của bạn cần quyền truy cập vào các dịch vụ khác của Google (chẳng hạn như Lịch Google hoặc Drive), bạn nên yêu cầu các quyền đó riêng biệt và chỉ khi người dùng đang cố gắng thực hiện một hành động yêu cầu các quyền đó. Hãy xem phần Các thời điểm xác thực và uỷ quyền riêng biệt để biết thêm thông tin chi tiết.
Các phương pháp bảo mật hay nhất
Để tích hợp an toàn, hãy luôn xác minh mã nhận dạng trên máy chủ phụ trợ bằng Thư viện ứng dụng API của Google. Để được bảo vệ toàn diện hơn trước nhiều mối đe doạ, hãy triển khai Gói bảo mật và Bảo vệ nhiều tài khoản (RISC). Ngoài ra, đối với các ứng dụng iOS, bạn nên tích hợp App Check để đảm bảo các yêu cầu bắt nguồn từ ứng dụng chính thống của bạn.
Trải nghiệm người dùng (UX)
Phần này tập trung vào việc tối ưu hoá các phần tử mà người dùng nhìn thấy và quy trình đăng nhập/đăng ký.
Hiển thị nổi bật nút này: Nút Đăng nhập bằng Google phải xuất hiện rõ ràng và dễ truy cập trên trang đăng nhập và đăng ký của bạn.
Tuân thủ nguyên tắc sử dụng thương hiệu: Sử dụng các nút đăng nhập chính thức mang thương hiệu Google để đảm bảo trải nghiệm nhất quán và đáng tin cậy cho người dùng. Xem Nguyên tắc sử dụng thương hiệu chính thức của tính năng Đăng nhập bằng Google.
Đăng ký dễ dàng: Đối với người dùng mới, hãy tự động tạo tài khoản hoặc chuyển người dùng đến quy trình tạo tài khoản mới khi họ đăng nhập thành công lần đầu bằng quy trình Đăng nhập bằng Google. Ở phần phụ trợ, hãy kiểm tra xem có người dùng nào có mã nhận dạng
subđã cho hay không; nếu không, hãy tạo một tài khoản mới. Điều này giúp giảm thiểu nỗ lực đăng ký.Đăng nhập đơn giản: Đối với người dùng cũ, hãy sử dụng mã nhận dạng
subđể xác định và xác thực họ vào tài khoản hiện có của họ. Triển khai các tính năng như tự động đăng nhập cho Web và Android để nhanh chóng và an toàn đưa người dùng trở lại ứng dụng của bạn.Quản lý các phương thức đăng nhập bằng tài khoản mạng xã hội: Cung cấp một mục "Tài khoản được kết nối" tập trung trong phần cài đặt người dùng, nơi người dùng có thể quản lý nhiều phương thức đăng nhập bằng tài khoản mạng xã hội (ví dụ: Google).
Liên kết: Cung cấp nút "Đăng nhập bằng Google" cho người dùng hiện tại đang sử dụng các phương thức khác (ví dụ: tên người dùng và mật khẩu). Khi nhấp vào nút này, quy trình xác thực sẽ bắt đầu để liên kết Tài khoản Google của người dùng với hồ sơ hiện có của họ.
Huỷ liên kết: Cung cấp lựa chọn ngắt kết nối tài khoản. Để hoàn tất việc này, bạn phải thu hồi mã thông báo và xoá mối liên kết với Google khỏi cơ sở dữ liệu của mình.
Triển khai trên Android (ứng dụng và trò chơi)
Ứng dụng Android tiêu chuẩn
Đối với các hoạt động triển khai trên Android, bạn nên sử dụng Trình quản lý thông tin xác thực. Đây là phương pháp được đề xuất để xử lý thông tin xác thực của người dùng và mang đến trải nghiệm đăng nhập hợp nhất, an toàn và nhất quán trên Android.
Sử dụng mã ứng dụng OAuth cho Android để triển khai. Nếu đã triển khai tính năng Đăng nhập bằng Google trên các nền tảng khác (ví dụ: Web, iOS), bạn nên tạo một loại mã ứng dụng khách OAuth mới cho Android trong cùng một dự án trên Google Cloud.
Quy trình triển khai
Một quy trình triển khai mạnh mẽ phải bao gồm cả giao diện người dùng bảng dưới cùng của Trình quản lý thông tin xác thực và nút Đăng nhập bằng Google.
- Bảng dưới cùng: Đây là lời nhắc do nhà phát triển điều khiển, có độ ma sát thấp do Trình quản lý thông tin xác thực trình bày khi người dùng truy cập vào màn hình đăng nhập của bạn.
- Nút Đăng nhập bằng Google: Đây là quy trình đăng nhập rõ ràng do người dùng bắt đầu. Người dùng có thể nhấn vào nút này để bắt đầu.
- Bạn cần phải có cấu hình chính xác cho dự án trên Google Cloud. Việc này bao gồm việc tạo đúng các loại mã ứng dụng khách OAuth và cung cấp thông tin cụ thể như vân tay chứng chỉ
SHA-1của ứng dụng. Để đảm bảo thiết lập đúng cách, hãy làm theo chính xác hướng dẫn chính thức dành cho nhà phát triển Android.
Bạn phải luôn thêm quy trình Button vì người dùng có thể đóng bottomsheet hoặc đã tắt bottomsheet trong phần lựa chọn ưu tiên. Nút này đảm bảo người dùng luôn có thể bắt đầu quy trình đăng nhập.
Chiến lược vị trí
Nút Đăng nhập bằng Google:
- Vị trí: Hiển thị nút Đăng nhập bằng Google trên các trang đăng ký hoặc đăng nhập chuyên dụng.
- Khả năng hiển thị: Đặt nút này ở vị trí nổi bật cùng với các phương thức đăng nhập khác, chẳng hạn như trường tên người dùng và mật khẩu hoặc các nhà cung cấp dịch vụ đăng nhập bằng tài khoản mạng xã hội khác.
Trình quản lý thông tin xác thực Bottomsheet:
- Kích hoạt: Bảng dưới cùng sẽ được triệu hồi tự động khi trang đăng nhập của bạn khởi chạy hoặc khi ứng dụng khởi động. Sự kiện này không được kích hoạt khi người dùng nhấn vào một nút.
- Đăng nhập tự động: Đối với người dùng cũ, bạn nên bật lựa chọn đăng nhập tự động trong Trình quản lý thông tin xác thực. Điều này cho phép người dùng cũ (trước đây đã đồng ý) đăng nhập lại vào ứng dụng của bạn mà không cần tương tác.
Trò chơi Android
Đối với trò chơi Android, bạn không nên dùng Trình quản lý thông tin đăng nhập. Thay vào đó, nhà phát triển trò chơi nên sử dụng phương pháp Dịch vụ trò chơi của Google Play (PGS). Phương pháp này tập trung vào danh tính của Google trên nhiều nền tảng bằng cách sử dụng tính năng Đăng nhập bằng Google. Bạn có thể tìm thêm thông tin chi tiết trong Tài liệu về danh tính của Google trên nhiều nền tảng bằng tính năng Đăng nhập bằng Google.
Triển khai iOS
Sử dụng SDK chính thức của tính năng Đăng nhập bằng Google
Đối với các ứng dụng iOS, bạn nên sử dụng SDK Đăng nhập bằng Google cho iOS và macOS chính thức. Thư viện này cung cấp cách an toàn và thân thiện với người dùng nhất để tích hợp tính năng Đăng nhập bằng Google.
Sử dụng Mã ứng dụng OAuth cho iOS để triển khai. Nếu đã triển khai tính năng Đăng nhập bằng Google trên các nền tảng khác (ví dụ: Web, Android), bạn nên tạo một loại mã ứng dụng khách OAuth mới cho iOS trong cùng dự án Google Cloud.
Thêm nút "Đăng nhập bằng Google"
- Vị trí: Thêm nút "Đăng nhập bằng Google" vào chế độ xem đăng nhập của ứng dụng, trên cả trang đăng ký và đăng nhập. Đặt nút này ở vị trí nổi bật cùng với các phương thức đăng nhập khác, chẳng hạn như trường tên người dùng và mật khẩu hoặc các nhà cung cấp dịch vụ đăng nhập bằng tài khoản mạng xã hội khác.
- Sử dụng các thành phần được đề xuất: Sử dụng các thành phần nút chính thức do SDK cung cấp cho cả SwiftUI và UIKit. Các thành phần này tự động tạo một nút tuân thủ nguyên tắc sử dụng thương hiệu của Google và là cách được đề xuất để hiển thị nút.
Tăng cường tính bảo mật bằng App Check
Bảo vệ các tài nguyên phụ trợ của bạn khỏi hành vi sai trái bằng cách xác minh rằng các yêu cầu gửi đến ứng dụng khách OAuth 2.0 của bạn đến từ ứng dụng chính thống của bạn. Tính năng Kiểm tra ứng dụng sử dụng một trình cung cấp chứng thực để xác minh rằng các yêu cầu đến từ một phiên bản chính thống, chưa bị can thiệp của ứng dụng và từ chối những yêu cầu không đáp ứng điều kiện này. Hãy xem bài viết App Check cho tính năng Đăng nhập bằng Google trên iOS để biết thêm thông tin chi tiết.
Triển khai trên web
Hướng dẫn cho trang web và ứng dụng web.
Sử dụng thư viện JavaScript chính thức của tính năng Đăng nhập bằng Google
Đối với việc triển khai trên web, bạn nên sử dụng thư viện JavaScript chính thức của tính năng Đăng nhập bằng Google. Đây là thế hệ mới nhất của các thư viện nhận dạng của Google cho web, bao gồm cả các tính năng Nút và Một lần chạm.
Sử dụng Mã ứng dụng OAuth cho Web để triển khai. Nếu đã triển khai tính năng Đăng nhập bằng Google trên các nền tảng khác (ví dụ: Android, iOS), bạn nên tạo một loại Web mã ứng dụng khách OAuth mới trong cùng dự án Google Cloud.
Triển khai cả luồng Button và One Tap
Bạn nên triển khai cả nút "Đăng nhập bằng Google" và trải nghiệm đăng nhập bằng một lần chạm.
- Nút Đăng nhập bằng Google: Đây là quy trình đăng nhập/đăng ký rõ ràng do người dùng bắt đầu.
- Một lần chạm: Lời nhắc này giúp người dùng đăng nhập hoặc đăng ký một cách dễ dàng và ít bị gián đoạn.
- Sử dụng cùng một Mã ứng dụng OAuth cho Web cho cả hai cách triển khai.
Bạn luôn phải thêm Nút làm lựa chọn đăng nhập chính. Người dùng có thể bỏ qua hoặc tắt tính năng Một lần nhấn trong phần cài đặt Tài khoản Google. Tuy nhiên, Nút này sẽ luôn có sẵn, đảm bảo người dùng không bao giờ bị chặn đăng nhập.
Chiến lược vị trí
Nút Đăng nhập bằng Google:
- Vị trí: Hiển thị nút Đăng nhập bằng Google được cá nhân hoá trên các trang đăng ký hoặc đăng nhập chuyên dụng của bạn.
- Xin lưu ý rằng không có mẫu nào phù hợp nhất cho tất cả các trang web (ví dụ: chuyển hướng so với cửa sổ bật lên). Nhóm thiết kế web hoặc UX của bạn nên kiểm thử và tối ưu hoá các quy trình này để tối đa hoá tỷ lệ hoàn thành cho cả quy trình đăng ký và đăng nhập.
- Khả năng hiển thị: Đặt nút này ở vị trí nổi bật cùng với các phương thức đăng nhập khác, chẳng hạn như trường tên người dùng và mật khẩu hoặc các nhà cung cấp dịch vụ đăng nhập bằng tài khoản mạng xã hội khác.
- Xem xét: Mục Những điều cần cân nhắc về nút Đăng nhập bằng Google để có cấu hình và hiệu suất tối ưu.
- Vị trí: Hiển thị nút Đăng nhập bằng Google được cá nhân hoá trên các trang đăng ký hoặc đăng nhập chuyên dụng của bạn.
Lời nhắc Đăng nhập bằng một lần chạm:
- Vị trí: Hiển thị lời nhắc Đăng nhập bằng một lần nhấn trên nhiều trang của trang web, chẳng hạn như trang sản phẩm riêng lẻ, trang bài viết, thậm chí cả trang chủ. Lợi ích chính của tính năng Một lần chạm là cho phép người dùng đăng nhập hoặc tạo tài khoản mà không cần rời khỏi trang hiện tại.
- Đăng nhập tự động: Đối với người dùng cũ, bạn nên bật lựa chọn đăng nhập tự động trong tính năng Đăng nhập bằng một lần nhấn. Điều này cho phép người dùng cũ (đã đồng ý trước đó) đăng nhập lại vào ứng dụng của bạn mà không cần tương tác.
- Xem xét: Phần Những điều cần cân nhắc về tính năng Đăng nhập bằng một lần nhấn để có cấu hình và hiệu suất tối ưu.