계정 연동 해제
UnlinkProviderAsync
현재 로그인한 Player ID에서 로그인 수단 하나를 끊으려면 UnlinkProviderAsync()를 호출하세요. 사용자가 더 이상 쓰지 않는 계정을 정리하거나, 같은 종류의 다른 계정으로 바꾸기 위해 기존 연결을 먼저 끊을 때 사용합니다.
계정 연동 해제에는 아래 정책이 적용됩니다.
- 로그인한 상태에서만 해제 가능
- 해제 후 남는 로그인 수단 최소 한 개
- 게스트 해제 불가
해제 후 남는 로그인 수단을 셀 때 게스트는 포함하지 않습니다. 예를 들어 Google과 게스트만 연결된 계정에서 Google을 해제하면 사용자가 다시 로그인할 방법이 사라지므로 Hive Axyl 인증 서버가 요청을 거부합니다. 현재 로그인에 사용한 로그인 수단도 다른 로그인 수단이 남아 있으면 해제할 수 있습니다.
커스텀 계정도 같은 메서드로 해제하며, ProviderId에 CustomProvider를 지정합니다. 커스텀 계정에만 해당하는 안내는 커스텀 계정 연동 해제를 참조하세요.
호출 파라미터
| 필드명 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| request | ProviderUnlinkRequest | Required | 해제할 로그인 수단 정보 |
| context | ApiCallContext | Optional | 호출 단위 설정 객체입니다. 생략하면 기본값이 사용됩니다. |
ProviderUnlinkRequest
| 필드명 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
ProviderId | Provider | Required | 해제할 로그인 수단입니다. Google, SigninApple, GooglePlayGames, Steam, X, Username, CustomProvider 중 하나입니다. Guest는 해제할 수 없으며, 지정하면 GuestUnlinkBlocked로 거부됩니다. |
호출 예시
UnlinkProviderAsync()의 반환 객체 AuthUnlinkProviderResult는 성공, 기능별 결과인 Outcome, 호출을 마치지 못한 Failure로 나뉩니다. 이 메서드는 예외를 던지지 않고 모든 처리 결과를 반환 객체로 전달하므로, try/catch 대신 switch 구문으로 분기해 처리하세요.
해제는 되돌릴 수 없으므로, 호출 전에 사용자에게 확인을 받는 화면을 앱 클라이언트에서 노출하세요.
using Hive.Axyl.Auth;
using Hive.Axyl.Core;
using UnityEngine;
IAuthService auth = HiveCore.Resolve<IAuthService>();
var result = await auth.UnlinkProviderAsync(new ProviderUnlinkRequest {
ProviderId = Provider.X,
});
switch (result)
{
case AuthUnlinkProviderResult.Success:
// 해제 완료 → 화면의 연동 목록에서 해당 항목을 제거합니다.
Debug.Log("연동 해제 완료");
break;
case AuthUnlinkProviderResult.LastProviderUnlinkBlocked:
// 해제하면 로그인할 방법이 사라지는 상태입니다.
Debug.LogWarning("마지막으로 남은 로그인 수단은 해제할 수 없습니다.");
break;
// 공통 실패 처리 (네트워크·서버 오류)
case AuthUnlinkProviderResult.Failure failure:
HiveError err = failure.Problem;
Debug.LogError($"[{err.Code}] {err.Message} (trace: {err.TraceId})");
break;
// 안전망: 처리하지 않은 결과 및 알 수 없는 신규 결과(UnknownOutcome)
default:
Debug.LogWarning($"처리되지 않은 결과: {result.GetType().Name}");
break;
}
응답 데이터
성공 시 별도의 응답 데이터가 없습니다. 해제한 로그인 수단은 앱 클라이언트가 화면의 연동 목록에서 직접 제거하세요.
응답 상태
반환 객체 AuthUnlinkProviderResult는 아래 케이스 중 하나로 분기됩니다.
| 응답 케이스 | 설명 | 앱 클라이언트 대응 |
|---|---|---|
Success | 해제 성공 | 연동 목록에서 해당 항목 제거 |
LastProviderUnlinkBlocked | 해제하면 로그인할 수 있는 수단이 남지 않는 경우 | 다른 로그인 수단을 먼저 연동하도록 안내 |
GuestUnlinkBlocked | 게스트를 해제하려는 경우 | 게스트는 해제 대상이 아님을 안내 |
ProviderNotExist | 연결되어 있지 않은 로그인 수단을 해제하려는 경우 | 화면의 연동 목록을 최신 상태로 갱신 |
ProviderNotSupported | 정의되지 않은 ProviderId 값을 요청한 경우 | 요청한 ProviderId 값 점검 |
IpBlocked | 접속 IP가 차단된 경우 | 정책 안내 |
AppNotFound · TerminateService | 앱 정보를 찾을 수 없거나 서비스가 종료된 앱인 경우 | 콘솔의 App ID 등록 상태와 서비스 운영 상태 확인 |
AppIdMismatch · InvalidGatewayContext | 요청의 App ID가 인증 토큰의 프로젝트와 다르거나 인증 컨텍스트가 유효하지 않은 경우 | SDK 초기화에 사용한 App ID와 세션 상태 확인 |
UnknownOutcome | 이 SDK 버전이 알지 못하는 신규 결과 | 로깅 후 보수적으로 처리 |
Failure | 공통 Failure입니다. 필수 파라미터 누락·형식 오류(invalid_parameter), 필수 필드 누락(missing_field), X-App-Id 헤더 누락(missing_app_id)도 여기로 분기하며 원인은 Failure.Problem.ExternalCode에 담깁니다. 공통 오류 처리를 참조하세요. | 공통 오류 처리 기준에 따라 처리 |
연관 문서
- 계정 연동 처리 및 조회: 새 로그인 수단 연결과 연동 목록 확인
- 사용 예시: 연동과 해제를 화면 흐름에 적용한 예시