주요 콘텐츠로 건너뛰기

Game Hub에서 소셜 인증

Aghanim은 웹훅을 통한 플레이어 인증을 위해 여러 소셜 로그인 제공자(예: Apple, Discord, Facebook, Google)를 지원합니다. 이 웹훅은 로그인 이벤트 시 백엔드에 알림을 보내며, OAuth2 권한 부여 코드의 유효성을 검사하여 Game Hub 접근을 허가하거나 거부해야 합니다.

요구 사항

소셜 로그인을 사용하여 Aghanim에서 플레이어 검증 이벤트를 처리하기 위해 서버는 다음을 수행해야 합니다:

  • HTTPS POST 엔드포인트 노출.
  • Aghanim이 서명한 웹훅 이벤트 수락.
  • 제공된 code(OAuth2 Authorization Code Grant flow에서 response_type=code를 사용하여 획득한 인증 코드)를 적절한 공급자의 액세스 토큰으로 교환합니다.
  • 성된 사용자 프로필을 검증한 후 귀사의 플레이어 데이터베이스와 일치 여부를 확인합니다.
  • 성공 또는 실패에 대해 200 상태 코드와 JSON 페이로드로 응답합니다.

지원하는 공급자

게임 애플리케이션 대시보드에서 각 소셜 공급자를 구성하고 OAuth2 흐름에 대한 적절한 Redirect URI 처리를 보장해야 합니다. 다음 공급자들이 현재 지원됩니다:

  • Apple
  • Discord
  • Google
  • Facebook
정보

다른 OAuth2 호환 공급자에 대한 지원이 필요한 경우 문의해 주세요. 요청에 따라 추가 공급자를 통합할 수 있습니다.

OAuth2 Redirect URI

각 공급자에 대해 다음 Redirect URI가 해당 개발자 콘솔에 추가되었는지 확인하세요:

https://<GAME_HUB_DOMAIN>/oauth2/<PROVIDER>/callback

<GAME_HUB_DOMAIN>을 게임 허브의 도메인으로 (예: demo.aghanim.com), <PROVIDER>facebook, google, apple, 또는 discord로 교체하세요.

제공자별 구성

정보

일반적인 OAuth2 흐름이 제공업체마다 일관적이지만, 설정 단계는 플랫폼마다 조금씩 다릅니다. 세부적인 설정 지침은 각 제공자의 개발자 문서에서 찾을 수 있습니다.

Apple

  1. Apple 개발자 포털로 이동합니다
  2. Identifiers에서 새로운 Sign In with Apple 서비스를 등록합니다
  3. Services IDRedirect URI를 구성합니다.
  4. OAuth2 토큰 교환을 위한 client secret JWT를 생성합니다

Discord

  1. Discord 개발자 포털에 방문합니다
  2. 애플리케이션을 생성하고 OAuth2를 활성화합니다
  3. Redirect URI를 설정하세요

Facebook

  1. Facebook 개발자로 이동합니다
  2. 새로운 앱 만들기(유형: Consumer)
  3. Facebook 로그인 제품 추가
  4. Facebook 로그인 → 설정에서 구성합니다:
    • 클라이언트 OAuth 로그인:
    • Redirect URI에 대한 엄격 모드 사용:
  5. Valid OAuth Redirect URIsRedirect URI를 설정합니다.

Google

  1. Google 클라우드 콘솔로 이동합니다
  2. APIs & Services → Credentials에서 OAuth2 자격 증명을 만드세요
  3. Redirect URI 구성합니다

구성

엔드포인트를 등록하려면 다음을 실행하세요:

  • Aghanim 대시보드 → 게임 > 웹훅 > 새 웹훅, 플레이어 확인 이벤트 유형을 선택합니다.
  • 또는 Create Webhook API를 통해

요청 스키마

아래는 예시입니다 player.verify 웹훅 요청:

POST /your/webhook/uri HTTP/1.1
Content-Type: application/json
Host: your-webhook-endpoint.com
User-Agent: Aghanim/0.1.0
X-Aghanim-Signature: 2e45ed4dede5e09506717490655d2f78e96d4261040ef48cc623a780bda38812
X-Aghanim-Signature-Timestamp: 1725548450

{
"event_type": "player.verify",
"event_data": {
"method": "google",
"code": "4/0123abc...xyz"
},
"event_time": 1725548450,
"event_id": "whevt_eCacGbJVbvToOgzjXUgOCitkQE",
"idempotency_key": null,
"request_id": "d1593e9c-c291-4004-8846-6679c2e5810b",
"sandbox": false,
"trigger": "hub.login",
"transaction_id": "whtx_eCacGbJVbvT",
"context": null,
"game_id": "gm_exTAyxPsVwh"
}

이벤트 스키마

Key유형설명
event_idstringAghanim에 의해 생성된 고유 이벤트 ID.
game_idstringAghanim 시스템에서의 귀하의 게임 ID.
event_typestring이벤트의 유형, player.verify 이럴 경우.
event_timenumber유닉스 에포크 시간으로 된 이벤트 날짜.
event_dataEventData이벤트 특정 데이터가 포함되어 있으며, 상속된 객체에 대한 가능한 키가 포함됩니다.
idempotency_keystring|null웹훅 작업이 재시도되어도 한 번만 실행되도록 보장합니다. 일 수 있습니다 null 이벤트 유형에 따라 달라집니다.
request_idstring|null이벤트가 API 요청에 의해 트리거된 경우, 요청 ID가 포함됩니다.
sandboxboolean이 이벤트가 샌드박스 게임 환경에서 전송되었는지를 표시합니다.
triggerstring|nullThe trigger that caused the event to be sent.
transaction_idstringAghanim이 생성한 거래 ID입니다. 이 ID는 동일한 거래 내에서 발생한 여러 이벤트에서 동일할 수 있습니다.
contextEventContext|null이벤트에 대한 컨텍스트 정보.

EventContext 스키마

Key유형설명
orderOrderContext|null해당되는 경우 이벤트와 관련된 주문 정보입니다.
playerPlayerContext|null플레이어 정보를 추가하려면 웹훅 설정에서 "플레이어 컨텍스트 추가"를 활성화하세요.

EventData 스키마

Key유형설명
methodstring인증에 사용되는 공급자입니다. apple, discord, facebook, google 중 하나입니다.
codestring공급자가 생성한 승인 코드입니다. 자세한 내용은 RFC 6749 섹션 4.1.2를 참조하세요.

웹훅 처리

백엔드는 다음을 수행해야 합니다:

  1. 요청 본문에서 methodcode를 추출합니다.
  2. 해당 공급자의 OAuth2 토큰 엔드포인트를 사용하여 code를 액세스 토큰으로 교환합니다.
  3. 액세스 토큰을 사용하여 사용자 프로필을 조회합니다.
  4. 데이터베이스에 있는 플레이어와 소셜 계정을 매치하세요.
  5. 적절한 웹훅 응답 스키마를 사용하여 로그인을 허용하거나 거부합니다.

성공적인 응답 스키마

예상되는 구조에 대해서는 player.verify 웹훅 응답 문서를 참조하세요.

실패 응답 스키마

검증에 실패하면 200 상태 코드와 다음 JSON 응답으로 반환합니다:

{
"status": "error",
"code": "not_found",
"message": "Player not found"
}

가능한 오류 코드 목록:

  • not_found - 계정/플레이어를 찾을 수 없음.
  • invalid_signature - 서명이 유효하지 않았습니다.
  • validation_error - 요청 데이터가 유효하지 않았습니다.
  • banned - 계정/플레이어가 차단되었습니다.

도움이 필요하세요?
통합팀에 문의하십시오 integration@aghanim.com