feat(auth): Apple 로그인 구현 (#57)#58
Open
kangddong wants to merge 11 commits into
Open
Conversation
- PlatformAppleAuth 모듈 추가 (AppleAuthClient, AppleAuthCredential) - AppleLoginEndpoint, AppleLoginUserInfo 추가 (POST /auth/login/apple) - AppleServerLoginClient 추가 (서버 토큰 교환 + Keychain 저장) - IntroFeature에 appleLoginButtonTapped 액션 처리 추가 - IntroView에 Apple 로그인 버튼 UI 추가 - Sign in with Apple entitlement 추가 - Intro 스냅샷 baseline 갱신 (Apple 버튼 추가 반영) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Apple/Kakao 로그인 State 전이 검증 (성공·실패·에러 해제) - Apple 로그인 성공 → loginSucceeded=true, delegate(.loginSucceeded) - AppleAuthClient 실패 → errorMessage 설정 - AppleServerLoginClient 실패 → errorMessage 설정 - errorAlertDismissed → errorMessage=nil - Kakao 로그인 성공 동일 패턴 - KakaoServerLoginClient 실패 → errorMessage 설정 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Xcode 26에서 CombineSchedulers/Clocks 프레임워크의 -Swift.h 헤더를 의존성 스캔 시점에 찾지 못하는 빌드 에러 수정. SPM 패키지 타겟에만 SWIFT_ENABLE_EXPLICIT_MODULES=NO 적용. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Open
Xcode 26 명시적 모듈 빌드 시 SPM 패키지의 -Swift.h 헤더를 의존성 스캔 단계에서 찾지 못하는 이슈 대응. build 및 test 커맨드 모두 적용. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
CasePathsMacrosSupport 등 매크로 지원 프레임워크의 -Swift.h가 생성되기 전에 다른 타겟이 이를 import하는 경쟁 조건 해소. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
SWIFT_ENABLE_EXPLICIT_MODULES은 앱 타겟에만 적용되어 매크로 호스트 (CasePathsMacrosSupport 등 macOS 빌드) 에는 미적용. SWIFT_PACKAGES_ENABLE_EXPLICIT_MODULES=NO 로 SPM 패키지 전체 커버. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
CI는 매 실행 fresh 환경이므로 clean 불필요. tuist generate 캐시를 그대로 활용하여 매크로 호스트 빌드 순서 문제 우회. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… productTypes에 추가 PlatformAppleAuth 모듈 추가로 Xcode 26.3 병렬 빌드 시 explicit modules 스캐닝 race condition 노출. CombineSchedulers-Swift.h / CasePathsMacrosSupport-Swift.h 누락 근본 원인: productTypes 미등록 패키지가 Xcode 내장 SPM으로 빌드되어 SWIFT_ENABLE_EXPLICIT_MODULES=NO baseSettings 미적용. 핵심 TCA 의존성을 productTypes에 등록해 Tuist 관리 타겟으로 전환. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
CasePathsMacrosSupport/CasePathsMacros/SwiftNavigationMacros는 macOS 매크로 호스트 타겟으로 baseSettings 미적용. targetSettings로 직접 명시해 SWIFT_ENABLE_EXPLICIT_MODULES=NO 적용. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
targetSettings는 productTypes 미등록 타겟에 효과 없음. CasePathsMacrosSupport를 Tuist 관리 framework 타겟으로 등록해야만 SWIFT_ENABLE_EXPLICIT_MODULES=NO baseSettings 적용 가능. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
swift-navigation 2.10.1 및 swift-case-paths 1.8.0 에서 macOS 매크로 호스트 빌드 시 CasePathsMacrosSupport-Swift.h not found 발생. develop 기준 CI 통과 버전인 2.8.x / 1.7.x 계열로 범위 제한. 불필요한 CasePathsMacrosSupport productTypes/targetSettings 롤백. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
About this PR
⚓ Related Issue
🥥 Contents
Apple 로그인 엔드포인트 연동 및 전체 인증 흐름 구현
PlatformAppleAuth모듈 신설 —AppleAuthClient,AppleAuthCredential(AuthenticationServices 기반)AppleLoginEndpoint추가 —POST /auth/login/apple, body:{identityToken, user?{name, email}}AppleServerLoginClient추가 — Apple identity token → 서버 토큰 교환 + Keychain 저장IntroFeature—appleLoginButtonTapped액션 처리 (AppleAuth → ServerLogin → delegate)IntroView— Apple 로그인 버튼 UI 추가테스트
IntroFeatureTests신설 — Reducer 단위 테스트 6 TC📸 Screenshot
Other information 🔥
AppleAuthClient.liveValue는ASAuthorizationAppleIDProvider를 사용하며 첫 로그인 시에만user정보(이름/이메일) 제공identityToken(RS256 JWT),user.name.{firstName,lastName},user.email최초 1회만 전달