google static method
구글 로그인 에러 → KAuthError
매핑 전략
- 에러 코드 기반 매핑 (안정적)
- description 문자열 패턴 매칭 (fallback)
- 기본 에러 반환
지원하는 에러 코드
canceled,interrupted: 사용자가 로그인을 취소/중단함clientConfigurationError,providerConfigurationError: OAuth 설정 오류unknownError: 알 수 없는 에러 (문자열 패턴으로 세분화)
Implementation
static KAuthError google(GoogleSignInException e) {
final code = e.code;
// 1. 사용자 취소/중단
if (code == GoogleSignInExceptionCode.canceled ||
code == GoogleSignInExceptionCode.interrupted) {
return KAuthError.fromCode(ErrorCodes.userCancelled, originalError: e);
}
// 2. OAuth 설정 오류 (코드 기반)
if (code == GoogleSignInExceptionCode.clientConfigurationError ||
code == GoogleSignInExceptionCode.providerConfigurationError) {
return KAuthError(
code: ErrorCodes.googleMissingIosClientId,
message: 'Google OAuth 설정 오류입니다.',
hint: 'iosClientId 설정과 Cloud Console을 확인하세요.',
docs: 'https://console.cloud.google.com/apis/credentials',
originalError: e,
);
}
// 3. description 문자열 패턴 매칭 (unknownError용 fallback)
final desc = e.description?.toLowerCase() ?? '';
// 네트워크 에러 패턴
if (_GoogleErrorPatterns.matchesNetwork(desc)) {
return KAuthError(
code: ErrorCodes.networkError,
message: '네트워크 오류가 발생했습니다.',
hint: '인터넷 연결을 확인해주세요.',
originalError: e,
);
}
// OAuth 설정 에러 패턴
if (_GoogleErrorPatterns.matchesOAuth(desc)) {
return KAuthError(
code: ErrorCodes.googleMissingIosClientId,
message: 'Google OAuth 설정 오류입니다.',
hint: 'iosClientId 설정과 Cloud Console을 확인하세요.',
docs: 'https://console.cloud.google.com/apis/credentials',
originalError: e,
);
}
// 4. 기본 에러
return KAuthError(
code: ErrorCodes.googleSignInFailed,
message: '구글 로그인 중 오류가 발생했습니다.',
hint: e.description ?? 'Cloud Console 설정을 확인하세요.',
docs: 'https://console.cloud.google.com/apis/credentials',
originalError: e,
);
}