Các tài khoản được liên kết bằng các quy trình ngầm ẩn và mã uỷ quyền OAuth 2.0 theo tiêu chuẩn ngành. Dịch vụ của bạn phải hỗ trợ các điểm cuối uỷ quyền và trao đổi mã thông báo tuân thủ OAuth 2.0.
在隐式流程中,Google 会在用户的浏览器中打开您的授权端点。成功登录后,您将向 Google 返回一个长期访问令牌。现在,此访问令牌会包含在 Google 发送的每个请求中。
在授权代码流程中,您需要两个端点:
授权端点,用于向尚未登录的用户显示登录界面。授权端点还会创建一个短期授权代码,以记录用户对所请求访问权限的同意情况。
令牌交换端点,负责两种类型的交换:
- 使用授权代码换取长期有效的刷新令牌和短期有效的访问令牌。当用户完成账号关联流程时,就会发生此交换。
- 将长期有效的刷新令牌换成短期有效的访问令牌。当 Google 需要新的访问令牌(因为现有访问令牌已过期)时,就会发生这种交换。
选择 OAuth 2.0 流程
虽然隐式流程更易于实现,但 Google 建议通过隐式流程签发的访问令牌永不过期。这是因为,在隐式流程中,令牌过期后,系统会强制用户重新关联其账号。如果您出于安全考虑需要令牌过期,我们强烈建议您改用授权码流程。
设计准则
本部分介绍了您为 OAuth 关联流程托管的用户屏幕的设计要求和建议。在 Google 应用调用该 API 后,您的平台会向用户显示登录 Google 页面和账号关联意见征求界面。同意关联账号后,系统会将用户重定向回 Google 的应用。

要求
- 您必须说明用户的账号将与 Google 相关联,而非 Google Home 或 Google 助理等特定 Google 产品相关联。
建议
建议您执行以下操作:
显示 Google 的隐私权政策。在同意屏幕上添加指向 Google 隐私权政策的链接。
要共享的数据。使用清晰简洁的语言告知用户 Google 需要哪些用户数据以及原因。
添加醒目的号召性用语。在用户同意页面上提供明确的号召性用语,例如“同意并关联”。这是因为用户需要了解他们需要与 Google 分享哪些数据才能关联账号。
可以取消。为用户提供返回或取消链接的途径,如果用户选择不进行关联。
明确的登录流程。确保用户有明确的 Google 账号登录方法,例如用户名和密码字段或使用 Google 账号登录。
能够解除关联。提供一种可让用户解除关联的机制,例如指向您平台上账号设置的网址。或者,您也可以添加指向 Google 账号的链接,以便用户管理其关联的账号。
能够更改用户账号。建议用户切换账号的方法。如果用户通常拥有多个账号,这种做法尤为有益。
- 如果用户必须关闭意见征求界面才能切换账号,请向 Google 发送可恢复的错误,以便用户可以使用 OAuth 关联和隐式流程登录所需的账号。
添加您的徽标。在意见征求页面上显示您的公司徽标。 按照您的样式准则放置徽标。如果您还想显示 Google 的徽标,请参阅徽标和商标。

Tạo dự án
Cách tạo dự án để sử dụng tính năng liên kết tài khoản:
- Nhấp vào Tạo dự án.
- Nhập tên hoặc chấp nhận tên được đề xuất.
- Xác nhận hoặc chỉnh sửa mọi trường còn lại.
- Nhấp vào Tạo.
Cách xem mã dự án:
- Tìm dự án của bạn trong bảng trên trang đích. Mã dự án xuất hiện trong cột Mã.
Định cấu hình màn hình đồng ý OAuth
Quy trình Liên kết với Tài khoản Google bao gồm một màn hình yêu cầu sự đồng ý cho người dùng biết ứng dụng đang yêu cầu quyền truy cập vào dữ liệu của họ, loại dữ liệu mà ứng dụng đang yêu cầu và các điều khoản áp dụng. Bạn cần định cấu hình màn hình đồng ý OAuth trước khi tạo mã ứng dụng Google API.
- Mở trang màn hình đồng ý OAuth của Google API Console.
- Nếu được nhắc, hãy chọn dự án mà bạn vừa tạo.
Trên trang "Màn hình xin phép bằng OAuth", hãy điền thông tin vào biểu mẫu rồi nhấp vào nút "Lưu".
Tên ứng dụng: Tên của ứng dụng yêu cầu sự đồng ý. Tên này phải phản ánh chính xác ứng dụng của bạn và nhất quán với tên ứng dụng mà người dùng thấy ở những nơi khác. Tên ứng dụng sẽ xuất hiện trên màn hình đồng ý Liên kết tài khoản.
Biểu trưng ứng dụng: Một hình ảnh trên màn hình đồng ý giúp người dùng nhận ra ứng dụng của bạn. Biểu trưng này xuất hiện trên màn hình đồng ý liên kết tài khoản và trên chế độ cài đặt tài khoản
Email hỗ trợ: Để người dùng liên hệ với bạn khi có thắc mắc về sự đồng ý của họ.
Phạm vi cho các API của Google: Phạm vi cho phép ứng dụng của bạn truy cập vào dữ liệu riêng tư của người dùng trên Google. Đối với trường hợp sử dụng Liên kết với Tài khoản Google, phạm vi mặc định (email, hồ sơ, openid) là đủ, bạn không cần thêm bất kỳ phạm vi nhạy cảm nào. Thông thường, bạn nên yêu cầu các phạm vi theo từng bước, tại thời điểm cần truy cập, thay vì yêu cầu trước. Tìm hiểu thêm.
Miền được uỷ quyền: Để bảo vệ bạn và người dùng, Google chỉ cho phép những ứng dụng xác thực bằng OAuth sử dụng Miền được uỷ quyền. Đường liên kết đến các ứng dụng của bạn phải được lưu trữ trên Miền được uỷ quyền. Tìm hiểu thêm.
Đường liên kết đến trang chủ của ứng dụng: Trang chủ của ứng dụng. Phải được lưu trữ trên một Miền được uỷ quyền.
Đường liên kết đến Chính sách quyền riêng tư của ứng dụng: Xuất hiện trên màn hình xin phép Liên kết với Tài khoản Google. Phải được lưu trữ trên một Miền được uỷ quyền.
Đường liên kết đến Điều khoản dịch vụ của ứng dụng (Không bắt buộc): Phải được lưu trữ trên một Miền được uỷ quyền.
Hình 1 Màn hình đồng ý liên kết Tài khoản Google cho một Ứng dụng giả tưởng, Tunery
Kiểm tra "Trạng thái xác minh". Nếu ứng dụng của bạn cần xác minh, hãy nhấp vào nút "Gửi để xác minh" để gửi ứng dụng của bạn đi xác minh. Hãy tham khảo các yêu cầu xác minh OAuth để biết thông tin chi tiết.
Triển khai máy chủ OAuth
Để hỗ trợ quy trình ngầm OAuth 2.0, dịch vụ của bạn sẽ thực hiện uỷ quyền điểm cuối được cung cấp bởi HTTPS. Điểm cuối này chịu trách nhiệm xác thực và có được sự đồng ý của người dùng về việc truy cập dữ liệu. Điểm cuối uỷ quyền biểu thị giao diện người dùng đăng nhập cho những người dùng chưa đăng nhập và ghi lại đồng ý với quyền truy cập được yêu cầu.
Khi ứng dụng của Google cần gọi một trong những API được uỷ quyền của dịch vụ, Google sử dụng điểm cuối này để yêu cầu người dùng cho phép gọi các API này thay mặt cho công ty.
Một phiên luồng quy trình ngầm ẩn OAuth 2.0 điển hình do Google khởi tạo có quy trình sau:
- Google sẽ mở điểm cuối uỷ quyền của bạn trong trình duyệt của người dùng. Chiến lược phát hành đĩa đơn người dùng đăng nhập, nếu chưa đăng nhập và cấp cho Google quyền truy cập vào dữ liệu của họ bằng API của bạn nếu họ chưa cấp quyền.
- Dịch vụ của bạn sẽ tạo mã truy cập rồi trả lại cho Google. Để thực hiện việc này, hãy chuyển hướng trình duyệt của người dùng trở lại Google bằng quyền truy cập vào yêu cầu.
- Google gọi các API của dịch vụ và đính kèm mã truy cập bằng từng yêu cầu. Dịch vụ của bạn xác minh rằng mã truy cập cấp cho Google uỷ quyền truy cập API, sau đó hoàn tất lệnh gọi API.
Xử lý yêu cầu uỷ quyền
Khi một ứng dụng của Google cần thực hiện liên kết tài khoản qua OAuth 2.0 luồng ngầm ẩn, Google sẽ chuyển người dùng đến điểm cuối uỷ quyền của bạn bằng bao gồm các thông số sau:
Tham số điểm cuối ủy quyền | |
---|---|
client_id |
Mã ứng dụng khách mà bạn đã chỉ định cho Google. |
redirect_uri |
URL mà bạn gửi phản hồi tới yêu cầu này. |
state |
Giá trị sổ sách được chuyển lại cho Google không thay đổi trong URI chuyển hướng. |
response_type |
Loại giá trị cần trả về trong phản hồi. Đối với OAuth 2.0 ngầm ẩn
luồng, loại phản hồi luôn là token . |
user_locale |
Chế độ cài đặt ngôn ngữ trong Tài khoản Google trong RFC5646 định dạng dùng để bản địa hoá nội dung của bạn sang ngôn ngữ ưu tiên của người dùng. |
Ví dụ: nếu điểm cuối uỷ quyền của bạn có tại
https://myservice.example.com/auth
, một yêu cầu có thể có dạng như sau:
GET https://myservice.example.com/auth?client_id=GOOGLE_CLIENT_ID&redirect_uri=REDIRECT_URI&state=STATE_STRING&response_type=token&user_locale=LOCALE
Để điểm cuối uỷ quyền của bạn có thể xử lý các yêu cầu đăng nhập, hãy làm như sau các bước:
Xác minh các giá trị
client_id
vàredirect_uri
để ngăn việc cấp quyền truy cập vào các ứng dụng khách ngoài ý muốn hoặc bị định cấu hình sai:- Xác nhận rằng
client_id
khớp với mã ứng dụng khách mà bạn được chỉ định cho Google. - Xác nhận rằng URL do
redirect_uri
chỉ định thông số đó có dạng như sau:https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID
- Xác nhận rằng
Kiểm tra xem người dùng đã đăng nhập vào dịch vụ của bạn chưa. Nếu người dùng chưa ký hãy hoàn tất quy trình đăng nhập hoặc đăng ký dịch vụ của bạn.
Tạo mã truy cập cho Google dùng để truy cập vào API của bạn. Chiến lược phát hành đĩa đơn mã truy cập có thể là bất kỳ giá trị chuỗi nào, nhưng mã này phải thể hiện duy nhất người dùng và máy khách của mã thông báo đó và không được phép đoán.
Gửi phản hồi HTTP chuyển hướng trình duyệt của người dùng đến URL do tham số
redirect_uri
chỉ định. Bao gồm tất cả các tham số sau trong phân đoạn URL:access_token
: Mã truy cập bạn vừa tạotoken_type
: Chuỗibearer
state
: Giá trị trạng thái chưa được sửa đổi của giá trị gốc yêu cầu
Sau đây là ví dụ về URL kết quả:
https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID#access_token=ACCESS_TOKEN&token_type=bearer&state=STATE_STRING
Trình xử lý chuyển hướng OAuth 2.0 của Google nhận được mã truy cập và xác nhận
rằng giá trị state
không thay đổi. Sau khi Google có được
mã truy cập của dịch vụ của bạn, Google sẽ đính kèm mã này vào các lệnh gọi tiếp theo
cho các API dịch vụ của bạn.
Xử lý các yêu cầu thông tin người dùng
Điểm cuối userinfo là một tài nguyên được bảo vệ bằng OAuth 2.0. Tài nguyên này trả về các thông báo xác nhận quyền sở hữu về người dùng được liên kết. Việc triển khai và lưu trữ điểm cuối userinfo là không bắt buộc, ngoại trừ các trường hợp sử dụng sau:
- Đăng nhập vào tài khoản được liên kết bằng tính năng Google One Chạm.
- Gói thuê bao dễ dàng trên Android TV.
Sau khi đã truy xuất thành công mã truy cập từ điểm cuối của mã thông báo, Google sẽ gửi yêu cầu đến điểm cuối userinfo của bạn để truy xuất thông tin hồ sơ cơ bản về người dùng được liên kết.
tiêu đề của yêu cầu điểm cuối userinfo | |
---|---|
Authorization header |
Mã truy cập thuộc loại Bearer. |
Ví dụ: nếu điểm cuối userinfo của bạn có sẵn tại
https://myservice.example.com/userinfo
, một yêu cầu có thể có dạng như sau:
GET /userinfo HTTP/1.1 Host: myservice.example.com Authorization: Bearer ACCESS_TOKEN
Để điểm cuối userinfo xử lý các yêu cầu, hãy làm theo các bước sau:
- Trích xuất mã truy cập từ tiêu đề Uỷ quyền và trả về thông tin cho người dùng được liên kết với mã truy cập.
- Nếu mã truy cập không hợp lệ, hãy trả về lỗi HTTP 401 unauthorized (Không được phép sử dụng tiêu đề phản hồi
WWW-Authenticate
). Dưới đây là ví dụ về phản hồi khi xảy ra lỗi thông tin người dùng: Nếu phản hồi 401 Trái phép hoặc bất kỳ lỗi không thành công nào khác được trả về trong quá trình liên kết, thì lỗi này sẽ không khôi phục được, mã thông báo đã truy xuất sẽ bị loại bỏ và người dùng sẽ phải bắt đầu lại quy trình liên kết.HTTP/1.1 401 Unauthorized WWW-Authenticate: error="invalid_token", error_description="The Access Token expired"
Nếu mã truy cập hợp lệ, hãy trả về và phản hồi HTTP 200 kèm theo đối tượng JSON sau trong phần nội dung của HTTPS trả lời:
Nếu điểm cuối userinfo của bạn trả về phản hồi thành công HTTP 200, thì mã thông báo và các thông báo xác nhận quyền sở hữu đã truy xuất sẽ được đăng ký vào Tài khoản Google của người dùng.{ "sub": "USER_UUID", "email": "EMAIL_ADDRESS", "given_name": "FIRST_NAME", "family_name": "LAST_NAME", "name": "FULL_NAME", "picture": "PROFILE_PICTURE", }
phản hồi của thiết bị đầu cuối userinfo sub
Mã nhận dạng duy nhất giúp nhận dạng người dùng trong hệ thống của bạn. email
Địa chỉ email của người dùng. given_name
Không bắt buộc: Tên của người dùng. family_name
Không bắt buộc: Họ của người dùng. name
Không bắt buộc: Tên đầy đủ của người dùng. picture
Không bắt buộc: Ảnh hồ sơ của người dùng.
Xác thực quá trình triển khai
Bạn có thể xác thực phương thức triển khai bằng cách sử dụng công cụ OAuth 2.0 Playground.
Trong công cụ này, hãy làm theo các bước sau:
- Nhấp vào biểu tượng Configuration (Cấu hình) để mở cửa sổ OAuth 2.0 Configuration (Cấu hình OAuth 2.0).
- Trong trường Quy trình OAuth, hãy chọn Phía máy khách.
- Trong trường OAuth Endpoints (Điểm cuối OAuth), hãy chọn Custom (Tuỳ chỉnh).
- Chỉ định điểm cuối OAuth 2.0 và mã ứng dụng khách mà bạn đã chỉ định cho Google trong các trường tương ứng.
- Trong phần Bước 1, đừng chọn bất kỳ phạm vi nào của Google. Thay vào đó, hãy để trống trường này hoặc nhập một phạm vi hợp lệ cho máy chủ của bạn (hoặc một chuỗi tuỳ ý nếu bạn không sử dụng phạm vi OAuth). Khi bạn hoàn tất, hãy nhấp vào Uỷ quyền cho API.
- Trong các mục Bước 2 và Bước 3, hãy thực hiện quy trình OAuth 2.0 và xác minh rằng mỗi bước hoạt động như dự kiến.
Bạn có thể xác thực việc triển khai của mình bằng cách sử dụng công cụ Bản minh hoạ về cách liên kết Tài khoản Google.
Trong công cụ này, hãy làm theo các bước sau:
- Nhấp vào nút Đăng nhập bằng Google.
- Chọn tài khoản mà bạn muốn liên kết.
- Nhập mã dịch vụ.
- Bạn có thể nhập một hoặc nhiều phạm vi mà bạn sẽ yêu cầu quyền truy cập.
- Nhấp vào Bắt đầu bản minh hoạ.
- Khi được nhắc, hãy xác nhận rằng bạn có thể đồng ý và từ chối yêu cầu liên kết.
- Xác nhận rằng bạn được chuyển hướng đến nền tảng của mình.