AuthResult class

소셜 로그인 결과를 나타내는 클래스

KAuth.signIn 메서드의 반환값으로, 로그인 성공/실패 정보와 사용자 정보, 토큰 등을 포함합니다.

기본 사용법

final result = await kAuth.signIn(AuthProvider.kakao);

if (result.success) {
  final user = result.user!;
  print('환영합니다, ${user.displayName}!');
} else {
  print('로그인 실패: ${result.errorMessage}');
}

함수형 스타일 (권장)

// fold: 성공/실패 분기
final message = result.fold(
  onSuccess: (user) => '환영합니다, ${user.displayName}!',
  onFailure: (failure) => '로그인 실패: ${failure.message}',
);

// when: 성공/취소/실패 세분화
result.when(
  success: (user) => navigateToHome(user),
  cancelled: () => showToast('로그인을 취소했습니다'),
  failure: (failure) => showError(failure.message),
);

// 체이닝
result
  .onSuccess((user) => saveUser(user))
  .onFailure((failure) => logError(failure.code, failure.message));

// 값 추출
final name = result.mapUserOr((u) => u.displayName, 'Guest');

토큰 관리

if (result.isExpired) {
  // 토큰 만료됨, 재로그인 필요
}

if (result.isExpiringSoon()) {
  // 5분 내 만료 예정, 갱신 권장
}

print('남은 시간: ${result.timeUntilExpiry}');

JSON 직렬화

// 저장
final json = result.toJson();
await storage.write('auth', jsonEncode(json));

// 복원
final data = jsonDecode(await storage.read('auth'));
final restored = AuthResult.fromJson(data);

See also:

Constructors

AuthResult({required bool success, required AuthProvider provider, KAuthUser? user, String? accessToken, String? refreshToken, String? idToken, DateTime? expiresAt, String? errorMessage, String? errorCode, String? errorHint, Map<String, dynamic>? rawData})
const
AuthResult.failure({required AuthProvider provider, required String errorMessage, String? errorCode, String? errorHint})
실패 결과 생성
factory
AuthResult.fromJson(Map<String, dynamic> json)
JSON에서 생성
factory
AuthResult.success({required AuthProvider provider, KAuthUser? user, String? accessToken, String? refreshToken, String? idToken, DateTime? expiresAt, Map<String, dynamic>? rawData})
성공 결과 생성
factory

Properties

accessToken → String?
액세스 토큰
final
errorCode → String?
에러 코드 (실패 시)
final
errorHint → String?
에러 힌트 (실패 시)
final
errorMessage → String?
에러 메시지 (실패 시)
final
expiresAt → DateTime?
토큰 만료 시간
final
failure → KAuthFailure
실패 정보를 KAuthFailure로 반환
no setter
hashCode → int
The hash code for this object.
no setterinherited
idToken → String?
ID 토큰 (OIDC)
final
isExpired → bool
토큰이 만료되었는지 확인
no setter
provider → AuthProvider
로그인한 Provider 타입
final
rawData → Map<String, dynamic>?
원본 응답 데이터
final
refreshToken → String?
리프레시 토큰
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
success → bool
로그인 성공 여부
final
timeUntilExpiry → Duration?
토큰 만료까지 남은 시간
no setter
user → KAuthUser?
표준화된 사용자 정보
final

Methods

fold<T>({required T onSuccess(KAuthUser user), required T onFailure(KAuthFailure failure)}) → T
성공/실패에 따라 다른 값 반환
isExpiringSoon([Duration threshold = const Duration(minutes: 5)]) → bool
토큰이 곧 만료되는지 확인 (기본 5분 전)
mapUser<T>(T mapper(KAuthUser user)) → T?
사용자 정보를 변환하여 반환 (실패 시 null)
mapUserOr<T>(T mapper(KAuthUser user), T defaultValue) → T
사용자 정보를 변환하거나 기본값 반환
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
onFailure(void callback(KAuthFailure failure)) → AuthResult
실패 시에만 콜백 실행
onSuccess(void callback(KAuthUser user)) → AuthResult
성공 시에만 콜백 실행
toJson() → Map<String, dynamic>
JSON으로 변환
toString() → String
A string representation of this object.
override
when<T>({required T success(KAuthUser user), required T cancelled(), required T failure(KAuthFailure failure)}) → T
성공/실패/취소에 따라 다른 값 반환

Operators

operator ==(Object other) → bool
The equality operator.
inherited