Skip to content

Comments

[Feature/#177] - 애플 로그인 추가#178

Merged
alsgud8311 merged 22 commits intodevelopmentfrom
feature/#177
Oct 1, 2025
Merged

[Feature/#177] - 애플 로그인 추가#178
alsgud8311 merged 22 commits intodevelopmentfrom
feature/#177

Conversation

@alsgud8311
Copy link
Contributor

@alsgud8311 alsgud8311 commented Sep 30, 2025

📌 개요

✅ 작업 내용

  • 서버 : 애플 로그인 서버검증 및 로그인 로직 추가
  • 클라이언트 : 애플 네이티브 로그인 추가
  • 인프라 : 서버 다중화 인프라 작업 및 Dockerfile, compose, nginx 설정

🧪 테스트

  • 직접 테스트 완료

📝 참고 사항

애플 네이티브 로그인을 웹뷰에서 하기

스크린샷 2025-10-01 오후 9 05 06

애플 네이티브 로그인의 경우, 웹에서 리다이렉트 하는 방식이 아닌 네이티브의 로그인 UI를 사용하는 방식입니다.
앱 환경에서는 최대한 앱과 비슷한 환경을 제공하고자 네이티브 로그인을 사용할 수 있는 방법을 고민했습니다.

  1. 클라이언트가 웹뷰 내의 웹에서 애플 로그인 버튼 클릭
  2. 웹에서 웹뷰쪽으로 애플 로그인 메시지 전송
  3. React-Native쪽에서 네이티브 로그인 실행
  4. 로그인이 완료되면 로그인 결과를 웹뷰 -> 웹쪽으로 전송
  5. 웹에서 로그인 결과 데이터를 받으면 이에 대해 애플 로그인 API 호출
  6. 서버에서 공개키를 받아 토큰 검증 및 로그인 처리, redis에서 java에서 사용하는 자료형으로 변환하여 저장
  7. 세션 발급 후 쿠키로 sessionId를 인코딩하여 set-header
    와 같은 방식으로 기존 로그인 방식과 같은 세션 방식을 추가된 서버에서 구현하여 호환성 있도록 설계 및 구현하였습니다.

📎 관련 이슈

Closes #177

* iOS 프로젝트의 타겟 이름을 'kokomennative'에서 'kokomen'으로 변경
* 새로운 AppDelegate 및 Info.plist 파일 추가
* SplashScreen 및 아이콘 관련 리소스 추가
* Podfile 및 Podfile.lock 업데이트
* react-native-apple-authentication 및 apollo-client 관련 의존성 추가
* 기존 kokomennative 관련 파일 삭제
* .yarnrc.yml: 글로벌 캐시 비활성화 설정 추가
* package.json: 새로운 의존성(class-transformer, class-validator, cookie-parser) 추가
* yarn.lock: 새로운 의존성 및 관련 패키지 버전 업데이트
* axios 및 @nestjs/axios 패키지 추가
* useWebviewEvents 훅 추가: 음성 인식 및 웹뷰 메시지 처리 기능 포함
* useLogin 훅 추가: 애플 로그인 기능 구현
* InterviewMainScreen 및 DashboardScreen에서 useWebviewEvents 훅 사용으로 코드 정리
* Dockerfile: 새로운 local.Dockerfile 추가 및 Yarn Berry 환경 설정
* compose.server.local.yaml: Nginx 설정 및 서비스 구성 변경, 볼륨 마운트
* auth.module.ts: 인증 관련 모듈 및 서비스 등록
* auth.resolver.ts: 애플 로그인 뮤테이션 구현
* apple-auth.dto.ts: 애플 인증 입력 및 응답 DTO 정의
* apple-auth.service.ts: 애플 인증 토큰 검증 로직 추가
* auth.service.ts: 애플 로그인 처리 로직 구현
* socialLogin.service.ts: 소셜 로그인 관련 서비스 추가
* spring-session.service.ts: 세션 관리 로직 추가
* javaSerializer.ts: Redis Java 직렬화 유틸리티 추가
* session-auth.guard.ts: 세션 인증 가드 구현
* apple-credential-state.enum.ts: 애플 자격 상태 열거형 추가
* token.module.ts: 토큰 관련 모듈 정의 및 서비스 등록
* token.ts: 토큰 엔티티 및 비즈니스 로직 구현
* token.service.ts: 토큰 생성, 사용 및 검증을 위한 서비스 로직 추가
* member.service.ts: 회원 생성 시 트랜잭션 매니저 사용으로 변경
* member.ts: 회원 엔티티에 소셜 로그인 필드 추가 및 kakaoId, nickname 필드 수정
* memberSocialLogin.ts: 회원 소셜 로그인 엔티티 추가 및 관계 설정
* app.module.ts: AuthModule 추가
* main.ts: CORS 설정에 로컬 및 HTTPS 주소 추가
* transactionManager.ts: GraphQL 컨텍스트에서 트랜잭션 매니저를 가져오는 데코레이터 추가
* transactionInterceptor.ts: 트랜잭션 시작, 커밋 및 롤백을 처리하는 인터셉터 구현
* index.ts: 웹뷰에서 사용할 초기 스크립트 상수 추가
* interviewMain.tsx, dashboard.tsx: 초기 스크립트를 상수로 대체하여 코드 정리
* OS를 추가하여 웹뷰 IOS 환경일 때만 apple 로그인이 가능하도록 설정
* main.tsx: ApolloProvider 추가 및 ApolloClient 설정
* gql.ts: 애플 로그인 뮤테이션 및 입력 타입 정의
* useLogin.ts: 애플 로그인 처리 로직 및 메시지 핸들링 구현
* index.tsx: 애플 로그인 버튼 추가 및 로그인 훅 사용
* rankCard.tsx: 오류 처리 추가 및 UI 마진 수정
* __root.tsx: 스크롤바 숨김 클래스 추가
* button/index.tsx: 버튼 변형에 'none' 추가
@claude
Copy link

claude bot commented Sep 30, 2025

Claude encountered an error —— View job


I'll analyze this and get back to you.

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @alsgud8311, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 PR은 iOS 네이티브 앱과 백엔드 서버에 Apple 로그인 기능을 통합하는 것을 목표로 합니다. 이를 위해 네이티브 앱의 웹뷰 통신 방식을 개선하고, 백엔드에 새로운 인증 모듈과 Spring 세션 호환 Redis 기반 세션 관리 시스템을 도입했습니다. 또한, GraphQL 뮤테이션에 대한 트랜잭션 처리와 사용자 토큰 관리 시스템을 구축했습니다. 전반적으로 'kokomennative'라는 프로젝트 이름을 'kokomen'으로 변경하는 리팩토링도 포함되어 있습니다.

Highlights

  • Apple 로그인 기능 통합: iOS 네이티브 앱과 백엔드 서버에 Apple 로그인 기능이 완전히 통합되었습니다. 이는 사용자 인증 경험을 확장하고 새로운 로그인 옵션을 제공합니다.
  • 백엔드 인증 시스템 재구축: 새로운 AuthModule이 도입되어 Apple 인증 서비스, Redis를 활용한 Spring 호환 세션 관리, 소셜 로그인 처리 등 백엔드 인증 로직이 전면적으로 개선되었습니다.
  • GraphQL 뮤테이션 트랜잭션 처리: GraphQL 뮤테이션에 대한 데이터베이스 트랜잭션을 관리하기 위해 TransactionInterceptor와 TransactionManager 데코레이터가 구현되어 데이터 일관성과 안정성이 향상되었습니다.
  • 사용자 토큰 관리 시스템 도입: 사용자의 무료 및 유료 토큰을 관리하는 새로운 Token 엔티티와 TokenService가 추가되어 토큰 기반의 서비스 운영이 가능해졌습니다.
  • 네이티브 앱 웹뷰 통신 및 프로젝트명 리팩토링: 네이티브 앱의 웹뷰 이벤트 처리가 중앙 집중화되었으며, iOS 프로젝트 파일 및 package.json에서 'kokomennative'가 'kokomen'으로 일관되게 변경되었습니다.
Ignored Files
  • Ignored by pattern: .github/workflows/** (2)
    • .github/workflows/deploy-nest-dev.yml
    • .github/workflows/deploy-nest-prod.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@github-actions
Copy link

🛠️ Build Summary

Status: ✅ SUCCESS
Duration: 57초
Exit Code: 0
Commit: 5ce6e11

📋 Build Output (마지막 45줄)

   Generating static pages (2/4) 
   Generating static pages (3/4) 
 ✓ Generating static pages (4/4)
   Finalizing page optimization ...
   Collecting build traces ...

Route (pages)                                 Size  First Load JS
┌ ƒ /                                      77.3 kB         639 kB
├   /_app                                      0 B         308 kB
├ ○ /404 (1349 ms)                         1.78 kB         313 kB
├ ○ /500 (1348 ms)                           757 B         309 kB
├ ƒ /api/auth/logout                           0 B         308 kB
├ ƒ /dashboard                             14.6 kB         634 kB
├ ƒ /interviews                            7.52 kB         346 kB
├ ƒ /interviews/[interviewId]              11.5 kB         604 kB
├ ƒ /interviews/[interviewId]/result       5.22 kB         364 kB
├ ○ /layout (1347 ms)                        540 B         309 kB
├   └ css/2af4d3721e97fa9b.css               280 B
├ ƒ /login                                  2.6 kB         313 kB
├ ƒ /login/callback                           2 kB         334 kB
├ ƒ /login/google/callback                    2 kB         334 kB
├ ƒ /login/profile                         11.3 kB         366 kB
├ ƒ /members/[memberId]                     3.6 kB         339 kB
├ ƒ /members/interviews/[interviewId]      6.85 kB         339 kB
├ ƒ /purchase                              6.41 kB         628 kB
├ ƒ /purchase/confirm                      1.75 kB         333 kB
├ ○ /purchase/error (1346 ms)                799 B         311 kB
├ ƒ /terms/privacy                         5.06 kB         337 kB
└ ƒ /terms/termsofuse                      4.47 kB         336 kB
+ First Load JS shared by all               324 kB
  ├ chunks/framework-c597d0180e500632.js   57.6 kB
  ├ chunks/main-269badb275dd0fdf.js         176 kB
  ├ chunks/pages/_app-8650be0bfdb32811.js  72.7 kB
  ├ css/d679a26ab67d1f1c.css               15.1 kB
  └ other shared chunks (total)            1.89 kB

ƒ Middleware                               96.2 kB

○  (Static)   prerendered as static content
ƒ  (Dynamic)  server-rendered on demand

   Memory usage report:
    - Total time spent in GC: 399.21ms
    - Peak heap usage: 68.59 MB
    - Peak RSS usage: 681.43 MB

🤖 Generated by GitHub Actions at Tue Sep 30 14:02:16 UTC 2025

gemini-code-assist[bot]

This comment was marked as resolved.

@github-actions
Copy link

🚀 Lighthouse Report for TEST1

📅 Date: 9/30/2025

Category Score
🔴 Performance 18
🟢 Accessibility 96
🟢 Best Practices 96
🟢 SEO 100

📊 Performance Details

Metric Score Value
🟢 First Contentful Paint 98 1.3 s
🔴 Largest Contentful Paint 3 7.6 s
🔴 Cumulative Layout Shift 15 0.518

🚀 Lighthouse Report for TEST2

📅 Date: 9/30/2025

Category Score
🔴 Performance 28
🟢 Accessibility 96
🟢 Best Practices 96
🟢 SEO 100

📊 Performance Details

Metric Score Value
🟢 First Contentful Paint 100 0.9 s
🔴 Largest Contentful Paint 25 5.1 s
🔴 Cumulative Layout Shift 15 0.518

🚀 Lighthouse Report for TEST3

📅 Date: 9/30/2025

Category Score
🔴 Performance 27
🟢 Accessibility 96
🟢 Best Practices 96
🟢 SEO 100

📊 Performance Details

Metric Score Value
🟢 First Contentful Paint 100 0.9 s
🔴 Largest Contentful Paint 19 5.5 s
🔴 Cumulative Layout Shift 15 0.518

🚀 Lighthouse Report for TEST4

📅 Date: 9/30/2025

Category Score
🔴 Performance 28
🟢 Accessibility 96
🟢 Best Practices 96
🟢 SEO 100

📊 Performance Details

Metric Score Value
🟢 First Contentful Paint 100 1.0 s
🔴 Largest Contentful Paint 22 5.3 s
🔴 Cumulative Layout Shift 15 0.518

🚀 Lighthouse Report for TEST5

📅 Date: 9/30/2025

Category Score
🔴 Performance 26
🟢 Accessibility 96
🟢 Best Practices 96
🟢 SEO 100

📊 Performance Details

Metric Score Value
🟢 First Contentful Paint 100 0.9 s
🔴 Largest Contentful Paint 17 5.7 s
🔴 Cumulative Layout Shift 15 0.518

* useLogin.ts: 애플 로그인 관련 훅 및 로직 삭제
* main.tsx: GraphQL API URL을 환경 변수로 변경
* vite-env.d.ts: VITE_GRAPHQL_API_URL 환경 변수 정의 추가
* useWebviewEvents.ts: 음성 인식 권한 요청 후 결과에 따라 메시지 전송 로직을 간소화하여 코드 가독성 향상
* auth.resolver.ts: JSESSIONID 쿠키의 Max-Age를 86400초로 변경
* auth.service.ts: 애플 로그인 제공자 상수를 추가하고, 닉네임 생성 로직을 수정하여 한국어로 변경
* transactionInterceptor.ts: 트랜잭션 오류 로깅을 console에서 Logger로 변경하여 코드 일관성 향상
@claude
Copy link

claude bot commented Sep 30, 2025

Claude encountered an error —— View job


I'll analyze this and get back to you.

@github-actions
Copy link

🛠️ Build Summary

Status: ✅ SUCCESS
Duration: 57초
Exit Code: 0
Commit: 0daa04d

📋 Build Output (마지막 45줄)

   Generating static pages (2/4) 
   Generating static pages (3/4) 
 ✓ Generating static pages (4/4)
   Finalizing page optimization ...
   Collecting build traces ...

Route (pages)                                 Size  First Load JS
┌ ƒ /                                      77.3 kB         639 kB
├   /_app                                      0 B         308 kB
├ ○ /404 (1434 ms)                         1.78 kB         313 kB
├ ○ /500 (1432 ms)                           757 B         309 kB
├ ƒ /api/auth/logout                           0 B         308 kB
├ ƒ /dashboard                             14.6 kB         634 kB
├ ƒ /interviews                            7.52 kB         346 kB
├ ƒ /interviews/[interviewId]              11.5 kB         604 kB
├ ƒ /interviews/[interviewId]/result       5.22 kB         364 kB
├ ○ /layout (1432 ms)                        540 B         309 kB
├   └ css/2af4d3721e97fa9b.css               280 B
├ ƒ /login                                  2.6 kB         313 kB
├ ƒ /login/callback                           2 kB         334 kB
├ ƒ /login/google/callback                    2 kB         334 kB
├ ƒ /login/profile                         11.3 kB         366 kB
├ ƒ /members/[memberId]                     3.6 kB         339 kB
├ ƒ /members/interviews/[interviewId]      6.85 kB         339 kB
├ ƒ /purchase                              6.41 kB         628 kB
├ ƒ /purchase/confirm                      1.75 kB         333 kB
├ ○ /purchase/error (1431 ms)                799 B         311 kB
├ ƒ /terms/privacy                         5.06 kB         337 kB
└ ƒ /terms/termsofuse                      4.47 kB         336 kB
+ First Load JS shared by all               324 kB
  ├ chunks/framework-c597d0180e500632.js   57.6 kB
  ├ chunks/main-68b84745d2b67d7c.js         176 kB
  ├ chunks/pages/_app-8650be0bfdb32811.js  72.7 kB
  ├ css/d679a26ab67d1f1c.css               15.1 kB
  └ other shared chunks (total)            1.89 kB

ƒ Middleware                               96.2 kB

○  (Static)   prerendered as static content
ƒ  (Dynamic)  server-rendered on demand

   Memory usage report:
    - Total time spent in GC: 403.63ms
    - Peak heap usage: 68.59 MB
    - Peak RSS usage: 690.53 MB

🤖 Generated by GitHub Actions at Tue Sep 30 16:18:39 UTC 2025

@github-actions
Copy link

🚀 Lighthouse Report for TEST1

📅 Date: 9/30/2025

Category Score
🔴 Performance 19
🟢 Accessibility 96
🟢 Best Practices 96
🟢 SEO 100

📊 Performance Details

Metric Score Value
🟢 First Contentful Paint 99 1.1 s
🔴 Largest Contentful Paint 7 6.8 s
🔴 Cumulative Layout Shift 15 0.518

🚀 Lighthouse Report for TEST2

📅 Date: 9/30/2025

Category Score
🔴 Performance 27
🟢 Accessibility 96
🟢 Best Practices 96
🟢 SEO 100

📊 Performance Details

Metric Score Value
🟢 First Contentful Paint 100 0.9 s
🔴 Largest Contentful Paint 21 5.3 s
🔴 Cumulative Layout Shift 15 0.518

🚀 Lighthouse Report for TEST3

📅 Date: 9/30/2025

Category Score
🔴 Performance 33
🟢 Accessibility 96
🟢 Best Practices 96
🟢 SEO 100

📊 Performance Details

Metric Score Value
🟢 First Contentful Paint 100 0.9 s
🟠 Largest Contentful Paint 58 3.7 s
🔴 Cumulative Layout Shift 15 0.518

🚀 Lighthouse Report for TEST4

📅 Date: 9/30/2025

Category Score
🔴 Performance 33
🟢 Accessibility 96
🟢 Best Practices 96
🟢 SEO 100

📊 Performance Details

Metric Score Value
🟢 First Contentful Paint 100 0.9 s
🔴 Largest Contentful Paint 46 4.1 s
🔴 Cumulative Layout Shift 15 0.518

🚀 Lighthouse Report for TEST5

📅 Date: 9/30/2025

Category Score
🔴 Performance 27
🟢 Accessibility 96
🟢 Best Practices 96
🟢 SEO 100

📊 Performance Details

Metric Score Value
🟢 First Contentful Paint 100 0.9 s
🔴 Largest Contentful Paint 20 5.4 s
🔴 Cumulative Layout Shift 15 0.518

@claude
Copy link

claude bot commented Oct 1, 2025

Claude encountered an error —— View job


I'll analyze this and get back to you.

@github-actions
Copy link

github-actions bot commented Oct 1, 2025

🛠️ Build Summary

Status: ✅ SUCCESS
Duration: 56초
Exit Code: 0
Commit: 4e4ae5b

📋 Build Output (마지막 45줄)

   Generating static pages (2/4) 
   Generating static pages (3/4) 
 ✓ Generating static pages (4/4)
   Finalizing page optimization ...
   Collecting build traces ...

Route (pages)                                 Size  First Load JS
┌ ƒ /                                      77.3 kB         639 kB
├   /_app                                      0 B         308 kB
├ ○ /404 (1388 ms)                         1.78 kB         313 kB
├ ○ /500 (1386 ms)                           757 B         309 kB
├ ƒ /api/auth/logout                           0 B         308 kB
├ ƒ /dashboard                             14.6 kB         634 kB
├ ƒ /interviews                            7.52 kB         346 kB
├ ƒ /interviews/[interviewId]              11.5 kB         604 kB
├ ƒ /interviews/[interviewId]/result       5.22 kB         364 kB
├ ○ /layout (1386 ms)                        540 B         309 kB
├   └ css/2af4d3721e97fa9b.css               280 B
├ ƒ /login                                  2.6 kB         313 kB
├ ƒ /login/callback                           2 kB         334 kB
├ ƒ /login/google/callback                    2 kB         334 kB
├ ƒ /login/profile                         11.3 kB         366 kB
├ ƒ /members/[memberId]                     3.6 kB         339 kB
├ ƒ /members/interviews/[interviewId]      6.85 kB         339 kB
├ ƒ /purchase                              6.41 kB         628 kB
├ ƒ /purchase/confirm                      1.75 kB         333 kB
├ ○ /purchase/error (1385 ms)                799 B         311 kB
├ ƒ /terms/privacy                         5.06 kB         337 kB
└ ƒ /terms/termsofuse                      4.47 kB         336 kB
+ First Load JS shared by all               324 kB
  ├ chunks/framework-c597d0180e500632.js   57.6 kB
  ├ chunks/main-b54d9c47577821ff.js         176 kB
  ├ chunks/pages/_app-8650be0bfdb32811.js  72.7 kB
  ├ css/d679a26ab67d1f1c.css               15.1 kB
  └ other shared chunks (total)            1.89 kB

ƒ Middleware                               96.2 kB

○  (Static)   prerendered as static content
ƒ  (Dynamic)  server-rendered on demand

   Memory usage report:
    - Total time spent in GC: 404.79ms
    - Peak heap usage: 68.62 MB
    - Peak RSS usage: 687.80 MB

🤖 Generated by GitHub Actions at Wed Oct 1 12:03:32 UTC 2025

@github-actions
Copy link

github-actions bot commented Oct 1, 2025

🚀 Lighthouse Report for TEST1

📅 Date: 10/1/2025

Category Score
🔴 Performance 19
🟢 Accessibility 96
🟢 Best Practices 96
🟢 SEO 100

📊 Performance Details

Metric Score Value
🟢 First Contentful Paint 99 1.1 s
🔴 Largest Contentful Paint 6 7.0 s
🔴 Cumulative Layout Shift 15 0.518

🚀 Lighthouse Report for TEST2

📅 Date: 10/1/2025

Category Score
🔴 Performance 26
🟢 Accessibility 96
🟢 Best Practices 96
🟢 SEO 100

📊 Performance Details

Metric Score Value
🟢 First Contentful Paint 100 0.9 s
🔴 Largest Contentful Paint 17 5.7 s
🔴 Cumulative Layout Shift 15 0.518

🚀 Lighthouse Report for TEST3

📅 Date: 10/1/2025

Category Score
🔴 Performance 36
🟢 Accessibility 96
🟢 Best Practices 96
🟢 SEO 100

📊 Performance Details

Metric Score Value
🟢 First Contentful Paint 100 0.9 s
🟠 Largest Contentful Paint 56 3.8 s
🔴 Cumulative Layout Shift 15 0.518

🚀 Lighthouse Report for TEST4

📅 Date: 10/1/2025

Category Score
🔴 Performance 26
🟢 Accessibility 96
🟢 Best Practices 96
🟢 SEO 100

📊 Performance Details

Metric Score Value
🟢 First Contentful Paint 100 1.0 s
🔴 Largest Contentful Paint 20 5.4 s
🔴 Cumulative Layout Shift 15 0.518

🚀 Lighthouse Report for TEST5

📅 Date: 10/1/2025

Category Score
🔴 Performance 34
🟢 Accessibility 96
🟢 Best Practices 96
🟢 SEO 100

📊 Performance Details

Metric Score Value
🟢 First Contentful Paint 100 1.0 s
🟠 Largest Contentful Paint 52 3.9 s
🔴 Cumulative Layout Shift 15 0.518

@alsgud8311 alsgud8311 changed the title Feature/#177 [Feature/#177] - 로그인 추가 Oct 1, 2025
@alsgud8311 alsgud8311 changed the title [Feature/#177] - 로그인 추가 [Feature/#177] - 애플 로그인 추가 Oct 1, 2025
@alsgud8311 alsgud8311 merged commit 13475d4 into development Oct 1, 2025
4 of 5 checks passed
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.

[Feature] 애플 Oauth 추가

1 participant