콘텐츠로 이동

계정 연동 시 충돌 처리

연동하려는 로그인 수단이 이미 다른 Player ID에 연결되어 있으면 계정 연동 충돌이 발생합니다. 하나의 로그인 수단은 두 개 이상의 Player ID에 동시에 연결할 수 없기 때문입니다. 이 상황은 사용자가 예전에 그 계정으로 플레이한 기록이 남아 있을 때 주로 생기므로, 앱은 사용자에게 현재 계정을 그대로 둘지 예전 계정으로 옮겨 갈지 물어보고 선택에 따라 처리해야 합니다.

Hive Axyl SDK는 충돌 사실만 알려 줍니다. LinkProviderAsync()가 반환하는 ProviderOwnedByOther에는 상대 계정의 이용 기록이나 이용 제한 여부 같은 정보가 담기지 않으므로, 사용자에게 무엇을 보여 주고 어떤 선택지를 줄지는 앱 클라이언트에서 설계합니다.

1. 충돌 감지

사용자가 계정 연동을 시도한 시점에 충돌이 드러납니다. 앱 클라이언트는 연동 요청의 결과로 충돌을 감지하고 사용자에게 선택지를 노출합니다.

  1. 사용자가 앱의 환경설정 > 계정 화면에서 Google 같은 로그인 수단의 계정 연동을 선택합니다.
  2. 앱 클라이언트가 해당 로그인 수단으로 인증해 받은 값을 담아 LinkProviderAsync()를 호출합니다. 파라미터는 계정 연동 처리 및 조회를 참조하세요.
  3. 반환된 결과가 ProviderOwnedByOther이면 충돌입니다. 이 계정에 다른 이용 데이터가 연결되어 있음을 알리고, 현재 계정 유지와 충돌한 계정으로 전환 중 하나를 고르도록 안내하세요.

결과가 Success이면 충돌이 아니므로 연동 완료 화면으로 진행합니다. 그 밖의 결과는 계정 연동 처리 및 조회의 응답 상태를 참조하세요.

2. 충돌한 계정으로 전환

사용자가 예전 계정으로 옮겨 가기를 선택한 경우입니다. 연동으로는 두 계정을 합칠 수 없으므로, 충돌한 계정으로 다시 로그인해 세션을 그 Player ID로 바꿉니다.

  1. 사용자가 충돌 안내에서 전환을 선택합니다.
  2. 앱 클라이언트가 해당 로그인 수단의 로그인 흐름을 처음부터 다시 실행합니다. 인증 결과로 LoginProviderAsync()를 호출하고, 받은 인가 코드를 토큰으로 교환한 뒤 세션에 등록합니다. 로그인 수단별 구현은 외부 인증 제공자 로그인을 참조하세요.
  3. 반환된 결과에 따라 처리합니다.
    • Success: 세션이 충돌한 계정의 Player ID로 바뀝니다. 앱 클라이언트는 전환된 계정을 기준으로 앱 데이터를 다시 불러오고 화면을 갱신합니다.
    • 실패: 사용자가 인증을 취소했거나 인증 결과 검증에 실패한 상태입니다. 전환을 중단하고 기존 계정 화면으로 돌아갑니다.

전환하면 이전에 사용하던 계정의 세션은 사라집니다. 그 계정으로 다시 돌아올 수 있도록 인증 정보를 기기에 보관하려면 여러 계정 간 전환을 참조하세요.

3. 현재 계정 유지

사용자가 지금 사용하던 계정을 그대로 쓰기로 선택한 경우입니다. 연동 시도만 취소하면 되므로 추가로 호출할 메서드는 없습니다.

  1. 사용자가 충돌 안내에서 현재 계정 유지를 선택합니다.
  2. 앱 클라이언트가 충돌 안내를 닫고 환경설정 > 계정 화면으로 돌아갑니다. 해당 로그인 수단은 연동되지 않은 상태로 남습니다.

현재 세션과 연동 목록은 그대로 유지되므로 사용자는 앱을 계속 이용합니다.

연관 문서