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: (error) => '로그인 실패: $error',
);

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

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

// 값 추출
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
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(String? errorMessage)}) → 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(String? code, String? message)) 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(String? code, String? message)}) → T
성공/실패/취소에 따라 다른 값 반환

Operators

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