Google Account Linking API

Trang tham khảo này ghi lại các điểm cuối và giao diện do Google cung cấp mà ứng dụng của bạn sử dụng trong quá trình Liên kết tài khoản dựa trên OAuth.

Điều kiện tiên quyết và tiêu chuẩn

Để tương tác thành công với các điểm cuối của Google này, quá trình tích hợp của bạn phải tuân thủ các tiêu chuẩn sau:

  • OAuth 2.0: Tuân thủ RFC 6749.
  • Mã thông báo web JSON (JWT): Tuân thủ RFC 7519 (đối với Liên kết đơn giản hoá và RISC).
  • Mã thông báo sự kiện bảo mật: Tuân thủ RFC 8417 (đối với RISC).
  • HTTPS: Tất cả các yêu cầu phải được thực hiện qua một kết nối HTTPS bảo mật.

URI chuyển hướng OAuth

Điểm cuối nơi dịch vụ của bạn chuyển hướng trình duyệt của người dùng sau khi xác thực và đồng ý thành công. Tham số đường dẫn YOUR_PROJECT_ID là mã nhận dạng mà bạn định cấu hình trong quá trình đăng ký.

  • URL: https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
  • URL hộp cát: https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID

  • Phương thức: GET (sử dụng tính năng chuyển hướng trình duyệt)

Các tham số trong yêu cầu

Khi chuyển hướng người dùng trở lại Google, các tham số phải được thêm vào URL. Tuỳ thuộc vào quy trình OAuth được sử dụng, các tham số này được định dạng dưới dạng chuỗi truy vấn (quy trình Mã uỷ quyền) hoặc dưới dạng phân mảnh của URL (luồng cấp quyền trực tiếp).

Tham số Mô tả
code (Bắt buộc đối với quy trình Mã uỷ quyền) Mã uỷ quyền do dịch vụ của bạn tạo.
state (Bắt buộc) Giá trị trạng thái không sửa đổi ban đầu nhận được từ Google.
access_token (Bắt buộc đối với luồng cấp quyền trực tiếp) Mã truy cập có thời gian tồn tại lâu dài do dịch vụ của bạn tạo.
token_type (Bắt buộc đối với quy trình Ngầm ẩn) Phải là bearer.

Phản hồi lỗi

Nếu yêu cầu đến URI chuyển hướng OAuth có định dạng không đúng, bạn sẽ nhận được lỗi HTTP 400 Yêu cầu không hợp lệ. Nội dung phản hồi sẽ chứa một đối tượng JSON có cấu trúc sau:

Trường Mô tả
sendPostBody Xác định xem JS có nên chuyển hướng đến redirectUri bằng POST hay không. Thông thường là false trong trường hợp này.
errorMessage Thông báo lỗi sẽ hiển thị cho ứng dụng khi không thể hoàn tất quá trình chuyển hướng. Đối với các đoạn bị thiếu, thông báo này là "A URI fragment or query string must be set."

Phản hồi lỗi OAuth 2.0

Nếu người dùng từ chối đồng ý hoặc dịch vụ của bạn gặp lỗi, thì dịch vụ của bạn phải chuyển hướng người dùng trở lại URI chuyển hướng OAuth bằng các tham số lỗi OAuth 2.0 tiêu chuẩn (chẳng hạn như error=access_denied). Google sẽ xử lý các tham số này và hiển thị màn hình lỗi thích hợp cho người dùng.

API RISC (Không bắt buộc)

Dịch vụ của bạn sử dụng API này để chủ động thông báo cho Google khi người dùng huỷ liên kết tài khoản của họ trên nền tảng của bạn bằng giao thức RISC, đảm bảo cả hai nền tảng đều được đồng bộ hoá.

  • URL: https://risc.googleapis.com/v1/events:publish
  • Phương thức: POST
  • Xác thực: Yêu cầu mã thông báo Tài khoản dịch vụ của Google có các quyền thích hợp.
  • Content-Type: application/json

Xác nhận quyền sở hữu mã thông báo sự kiện bảo mật

Mã thông báo sự kiện bảo mật mà bạn sử dụng để thông báo cho Google về các sự kiện thu hồi mã thông báo phải tuân thủ các yêu cầu trong bảng sau:

Xác nhận quyền sở hữu Mô tả
iss Xác nhận quyền sở hữu tổ chức phát hành: Đây là một URL mà bạn lưu trữ và được chia sẻ với Google trong quá trình đăng ký.
aud Xác nhận quyền sở hữu đối tượng: Xác định Google là người nhận JWT. Bạn phải đặt giá trị này thành google_account_linking.
jti Xác nhận quyền sở hữu mã JWT: Đây là một mã nhận dạng duy nhất mà bạn tạo cho mỗi mã thông báo sự kiện bảo mật.
iat Xác nhận quyền sở hữu thời gian phát hành: Đây là giá trị NumericDate biểu thị thời điểm mã thông báo sự kiện bảo mật này được tạo.
toe Xác nhận quyền sở hữu thời gian của sự kiện: Đây là giá trị NumericDate không bắt buộc biểu thị thời điểm mã thông báo bị thu hồi.
exp Xác nhận quyền sở hữu thời gian hết hạn: Không đưa trường này vào, vì sự kiện dẫn đến thông báo này đã diễn ra.
events Xác nhận quyền sở hữu sự kiện bảo mật: Đây là một đối tượng JSON và chỉ được chứa một sự kiện thu hồi mã thông báo có các trường sau:

  • subject_type: Bạn phải đặt giá trị này thành oauth_token.
  • token_type: Đây là loại mã thông báo đang bị thu hồi, có thể là access_token hoặc refresh_token.
  • token_identifier_alg: Đây là thuật toán dùng để mã hoá mã thông báo và phải là hash_SHA512_double.
  • token: Đây là mã nhận dạng của mã thông báo bị thu hồi.

Để biết thêm thông tin về các loại và định dạng trường, hãy xem bài viết Mã thông báo web JSON (JWT)

Giao diện "Lật lại" của tính năng Lật ứng dụng

Đối với tính năng Lật ứng dụng, ứng dụng di động của bạn phải trả về mã uỷ quyền hoặc mã thông báo truy cập cho ứng dụng Google.

Android (Kết quả ý định)

Ứng dụng của bạn được mở bằng một Ý định. Sau khi đồng ý, ứng dụng sẽ hoàn tất và trả về kết quả cho Google. Để biết thêm thông tin, hãy xem hướng dẫn triển khai Android.

  • Hành động: com.google.android.gms.auth.CODE_AVAILABLE
  • Extras: code, state, access_token, token_type.

Ứng dụng của bạn mở Google bằng lược đồ URL tuỳ chỉnh hoặc Đường liên kết phổ quát HTTPS. Để biết thêm thông tin, hãy xem hướng dẫn triển khai iOS.

  • Định dạng: <return_url>?code=AUTHORIZATION_CODE&state=STATE_STRING