목적
Google / Kakao 와 동일한 흐름으로 Apple Sign-In 을 백엔드 /api/v1/auth/login/apple 에 연결.
배경
#2 의 소셜 로그인 작업에서 Apple 만 별도 이슈로 분리. (Google / Kakao 는 #2 / #30 에서 완료)
현재 상태:
AppleOAuthRepositoryImpl, AppleOAuthProvider, UnifiedOAuthUseCase.appleLogin 코드 골격은 존재
LoginFeature 의 .async(.prepareAppleRequest / .appleLogin) 분기까지 연결됨
- Apple 버튼 UI 와 nonce 흐름이 실제 화면에 노출/검증되지 않은 상태
연결 API
- POST
/api/v1/auth/login/apple
- body:
{ authorizationCode, redirectUri }
작업 내용
의존
참고
Projects/Domain/UseCase/Sources/OAuth/Provider/Apple/AppleOAuthProvider.swift
Projects/Data/Repository/Sources/OAuth/Apple/AppleOAuthRepositoryImpl.swift
Projects/Domain/UseCase/Sources/OAuth/UnifiedOAuthUseCase.swift (appleLogin)
목적
Google / Kakao 와 동일한 흐름으로 Apple Sign-In 을 백엔드
/api/v1/auth/login/apple에 연결.배경
#2 의 소셜 로그인 작업에서 Apple 만 별도 이슈로 분리. (Google / Kakao 는 #2 / #30 에서 완료)
현재 상태:
AppleOAuthRepositoryImpl,AppleOAuthProvider,UnifiedOAuthUseCase.appleLogin코드 골격은 존재LoginFeature의.async(.prepareAppleRequest / .appleLogin)분기까지 연결됨연결 API
/api/v1/auth/login/apple{ authorizationCode, redirectUri }작업 내용
SignInWithAppleButton(또는 커스텀 버튼 +ASAuthorizationAppleIDProvider) 노출prepareAppleRequest→ nonce 생성 + scopes(email, fullName) 부착appleLogin(Result<ASAuthorization, Error>)→unifiedOAuthUseCase.processOAuthFlow(.apple, credential, nonce, ...)로 전달appleUserNameSharedAppStorage 첫 로그인만 저장되는 동작 검증 (Apple 은 최초 1회만 fullName 제공)redirectUri규격 확정 (SocialType.apple.redirectUri현재 빈 문자열) 후 반영의존
참고
Projects/Domain/UseCase/Sources/OAuth/Provider/Apple/AppleOAuthProvider.swiftProjects/Data/Repository/Sources/OAuth/Apple/AppleOAuthRepositoryImpl.swiftProjects/Domain/UseCase/Sources/OAuth/UnifiedOAuthUseCase.swift(appleLogin)