콘텐츠로 이동

지원하는 로그인 수단 조회

Method

GetProviderListAsync

로그인 화면에 어떤 로그인 버튼을 노출할지 결정하려면 GetProviderListAsync()를 호출하세요. 로그인 전에 호출하는 메서드이므로 세션이 없어도 됩니다. 로그인 화면을 그리기 직전에 호출하고, 반환된 목록대로 로그인 버튼을 구성하세요.

Hive Axyl 인증 서버는 아래 조건을 모두 적용해 이 앱에서 지금 사용할 수 있는 로그인 수단 목록을 반환합니다. 앱 클라이언트는 조건을 따로 전달하지 않으며, 국가도 앱에서 지정할 수 없습니다.

  • 서비스 환경: App ID에 귀속된 실행 환경과 배포 스토어의 조합에 따라 사용할 수 있는 로그인 수단
  • 콘솔 로그인 설정: Hive 콘솔의 로그인 설정에서 사용으로 켜 둔 로그인 수단
  • 국가: 요청 IP로 판별한 국가에 따라 일부 로그인 수단 제외

호출 파라미터

필드명 타입 필수 여부 설명
context ApiCallContext Optional 호출 단위 설정 객체입니다. 멱등키, 취소 토큰, 요청 정책을 지정하며 생략하면 기본값이 사용됩니다.

호출 예시

GetProviderListAsync()의 반환 객체 AuthGetProviderListResult는 성공, 기능별 결과인 Outcome, 호출을 마치지 못한 Failure로 나뉩니다. 이 메서드는 예외를 던지지 않고 모든 처리 결과를 반환 객체로 전달하므로, try/catch 대신 switch 구문으로 분기해 처리하세요.

using Hive.Axyl.Auth;
using Hive.Axyl.Core;
using UnityEngine;

// auth: 모듈 초기화 시 등록한 IAuthService
IAuthService auth = HiveCore.Resolve<IAuthService>();

AuthGetProviderListResult result = await auth.GetProviderListAsync();

switch (result)
{
    case AuthGetProviderListResult.Success success:
        // 반환된 로그인 수단만 로그인 화면에 노출합니다.
        foreach (ProviderItem provider in success.Data.ProviderList)
            Debug.Log($"[LoginUI] {provider.ProviderId} 버튼 노출");
        break;

    case AuthGetProviderListResult.ProviderConfigNotFound:
        // 콘솔에 이 앱의 로그인 수단이 하나도 설정되지 않은 상태입니다.
        Debug.LogError("콘솔의 로그인 설정을 확인하세요.");
        break;

    // 공통 실패 처리 (네트워크·서버 오류)
    case AuthGetProviderListResult.Failure failure:
        HiveError err = failure.Problem;
        Debug.LogError($"[{err.Code}] {err.Message} (trace: {err.TraceId})");
        break;

    // 안전망: 처리하지 않은 결과 및 알 수 없는 신규 결과(UnknownOutcome)
    default:
        Debug.LogWarning($"처리되지 않은 결과: {result.GetType().Name}");
        break;
}

응답 데이터

성공 시 AuthGetProviderListResult.Success의 Data에 결과가 담깁니다.

변수명 타입 필수 여부 설명
Data.ProviderList IReadOnlyList<ProviderItem> Required 지금 이 앱에서 사용할 수 있는 로그인 수단 목록

ProviderItem

변수명 타입 필수 여부 설명
ProviderId Provider Required 로그인 수단 식별자입니다. Guest, Google, SigninApple, GooglePlayGames, Steam, X, Username, CustomProvider 중 하나입니다.
ProviderIndex int Required 로그인 수단을 나타내는 숫자 식별자

응답 예시

// Success 분기에서 success.Data.ProviderList를 순회한 출력 예시
// [LoginUI] Guest 버튼 노출
// [LoginUI] Google 버튼 노출
// [LoginUI] SigninApple 버튼 노출
// [LoginUI] GooglePlayGames 버튼 노출

응답 상태

반환 객체 AuthGetProviderListResult는 아래 케이스 중 하나로 분기됩니다.

응답 케이스 설명 앱 클라이언트 대응
Success 조회 성공. Data.ProviderList에 목록이 담깁니다. 목록대로 로그인 버튼 구성
AppNotFound 앱 정보를 찾을 수 없는 경우 콘솔의 App ID 등록 상태 확인
ProviderConfigNotFound 이 앱에 설정된 로그인 수단이 없는 경우 콘솔의 로그인 설정 확인
TerminateService 서비스가 종료된 앱인 경우 서비스 운영 상태 확인
UnknownOutcome 이 SDK 버전이 알지 못하는 신규 결과 로깅 후 보수적으로 처리
Failure 공통 Failure입니다. 필수 파라미터 누락·형식 오류(invalid_parameter), 필수 필드 누락(missing_field), X-App-Id 헤더 누락(missing_app_id)도 여기로 분기하며 원인은 Failure.Problem.ExternalCode에 담깁니다. 공통 오류 처리를 참조하세요. 공통 오류 처리 기준에 따라 처리

연관 문서