Skip to content

feat(auth): Apple 로그인 구현 (#57)#58

Open
kangddong wants to merge 11 commits into
developfrom
feat/57-apple-login
Open

feat(auth): Apple 로그인 구현 (#57)#58
kangddong wants to merge 11 commits into
developfrom
feat/57-apple-login

Conversation

@kangddong

Copy link
Copy Markdown
Collaborator

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 저장
  • IntroFeatureappleLoginButtonTapped 액션 처리 (AppleAuth → ServerLogin → delegate)
  • IntroView — Apple 로그인 버튼 UI 추가
  • Sign in with Apple entitlement 추가 (Debug/Release)
  • Intro 스냅샷 baseline 갱신 (버튼 추가 반영)

테스트

  • IntroFeatureTests 신설 — Reducer 단위 테스트 6 TC
    • Apple 로그인 성공/AuthClient 실패/ServerClient 실패/에러 해제
    • Kakao 로그인 성공/ServerClient 실패

📸 Screenshot

Light Dark
intro light intro dark

Other information 🔥

  • AppleAuthClient.liveValueASAuthorizationAppleIDProvider를 사용하며 첫 로그인 시에만 user 정보(이름/이메일) 제공
  • 서버 스펙: identityToken (RS256 JWT), user.name.{firstName,lastName}, user.email 최초 1회만 전달

kangddong and others added 3 commits June 29, 2026 18:40
- 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>
@kangddong kangddong linked an issue Jun 29, 2026 that may be closed by this pull request
kangddong and others added 8 commits June 29, 2026 18:57
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

애플 로그인 추가

1 participant