Google Account Linking API

이 참조 페이지에서는 OAuth 기반 계정 연결 프로세스 중에 앱에서 사용하는 Google 제공 엔드포인트 및 인터페이스를 설명합니다.

기본 요건 및 표준

이러한 Google 엔드포인트와 성공적으로 상호작용하려면 통합이 다음 표준을 준수해야 합니다.

  • OAuth 2.0: RFC 6749를 준수합니다.
  • JSON 웹 토큰 (JWT): RFC 7519를 준수합니다 (간소화된 연결 및 RISC).
  • 보안 이벤트 토큰: RFC 8417을 준수합니다 (RISC).
  • HTTPS: 모든 요청은 보안 HTTPS 연결을 통해 이루어져야 합니다.

OAuth 리디렉션 URI

인증 및 동의에 성공한 후 서비스에서 사용자의 브라우저를 리디렉션하는 엔드포인트입니다. YOUR_PROJECT_ID 경로 매개변수는 등록 중에 구성하는 ID입니다.

  • URL: https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
  • 샌드박스 URL: https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID

  • 메서드: GET (브라우저 리디렉션 사용)

요청 매개변수

사용자를 Google로 다시 리디렉션할 때는 매개변수를 URL에 추가해야 합니다. 사용된 OAuth 흐름에 따라 이러한 매개변수는 쿼리 문자열 (인증 코드 흐름) 또는 URL 프래그먼트 (암시적 흐름)로 형식이 지정됩니다.

파라미터 설명
code (인증 코드 흐름에 필요) 서비스에서 생성한 인증 코드입니다.
state (필수) 원래 Google에서 수신한 수정되지 않은 상태 값입니다.
access_token (암시적 흐름에 필요) 서비스에서 생성한 장기 액세스 토큰입니다.
token_type (암시적 흐름에 필요) bearer여야 합니다.

오류 응답

OAuth 리디렉션 URI에 대한 요청 형식이 잘못된 경우 HTTP 400 잘못된 요청 오류가 표시됩니다. 응답 본문에는 다음 구조의 JSON 객체가 포함됩니다.

필드 설명
sendPostBody JS가 POST를 사용하여 redirectUri로 리디렉션해야 하는지 결정합니다. 일반적으로 이 시나리오에서는 false입니다.
errorMessage 리디렉션을 완료할 수 없을 때 클라이언트에 표시할 오류 메시지입니다. 프래그먼트가 누락된 경우 "A URI fragment or query string must be set."입니다.

OAuth 2.0 오류 응답

사용자가 동의를 거부하거나 서비스에 오류가 발생하면 서비스에서 표준 OAuth 2.0 오류 매개변수 (예: error=access_denied)를 사용하여 사용자를 OAuth 리디렉션 URI로 다시 리디렉션해야 합니다. Google은 이러한 매개변수를 처리하고 사용자에게 적절한 오류 화면을 표시합니다.

RISC API (선택사항)

서비스에서 RISC 프로토콜을 사용하여 사용자가 플랫폼에서 계정을 연결 해제할 때 Google에 사전에 알리는 데 사용되며 두 플랫폼 이 동기화된 상태를 유지합니다.

  • URL: https://risc.googleapis.com/v1/events:publish
  • 메서드: POST
  • 인증: 적절한 권한이 있는 Google 서비스 계정 토큰이 필요합니다.
  • Content-Type: application/json

보안 이벤트 토큰 클레임

토큰 해지 이벤트를 Google에 알리는 데 사용하는 보안 이벤트 토큰은 다음 표의 요구사항을 준수해야 합니다.

소유권 주장 설명
iss 발급자 클레임: 사용자가 호스팅하는 URL이며 등록 중에 Google과 공유됩니다.
aud 대상 클레임: JWT 수신자로 Google을 식별합니다. google_account_linking으로 설정해야 합니다.
jti JWT ID 클레임: 모든 보안 이벤트 토큰에 대해 생성하는 고유 ID입니다.
iat 발급 시간 클레임: 이 보안 이벤트 토큰이 생성된 시간을 나타내는 NumericDate 값입니다.
toe 이벤트 시간 클레임: 토큰이 해지된 시간을 나타내는 선택사항 NumericDate 값입니다.
exp 만료 시간 클레임: 이 알림을 발생시킨 이벤트가 이미 발생했으므로 이 필드를 포함하지 마세요.
events 보안 이벤트 클레임: JSON 객체이며 다음 필드가 포함된 단일 토큰 해지 이벤트만 포함해야 합니다.

  • subject_type: oauth_token으로 설정해야 합니다.
  • token_type: 해지되는 토큰의 유형입니다(access_token 또는 refresh_token).
  • token_identifier_alg: 토큰을 인코딩하는 데 사용되는 알고리즘이며 hash_SHA512_double이어야 합니다.
  • token: 해지된 토큰의 ID입니다.

필드 유형 및 형식에 관한 자세한 내용은 JSON 웹 토큰 (JWT)을 참고하세요.

앱 전환 'Flip-Back' 인터페이스

앱 전환의 경우 모바일 앱은 승인 코드 또는 액세스 토큰을 Google 앱에 반환해야 합니다.

Android (인텐트 결과)

앱은 인텐트를 사용하여 열립니다. 동의 후 완료되고 결과를 Google에 반환합니다. 자세한 내용은 Android 구현 가이드를 참고하세요.

  • 작업: com.google.android.gms.auth.CODE_AVAILABLE
  • 추가: code, state, access_token, token_type.

앱은 맞춤 URL 스키마 또는 HTTPS 범용 링크를 사용하여 Google을 엽니다. 자세한 내용은 iOS 구현 가이드를 참고하세요.

  • 형식: <return_url>?code=AUTHORIZATION_CODE&state=STATE_STRING