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:
- KAuthUser - 표준화된 사용자 정보
- AuthProvider - 지원하는 로그인 Provider
- KAuth.signIn - 로그인 실행 메서드
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