Skip to content

[Feature] 구글 네이티브 로그인 구현 #65

@kongwoojin

Description

@kongwoojin

✨ 구글 네이티브 로그인 구현

팀/모듈: Native bridge / Service(services/)
우선순위: High


📋 기능 설명

네이티브 레이어에서 Google 로그인을 지원하여, WebView 기반의 OAuth 리다이렉트 방식 대신 네이티브 Google Sign-In UI를 통해 사용자 인증을 처리합니다.

현재 앱은 WebView 내에서 웹 기반 로그인을 수행하고, LOGIN_COMPLETE 브릿지 메시지로 accessToken을 네이티브에 전달하는 구조입니다. 구글 네이티브 로그인을 추가하면 별도의 네이티브 인증 플로우가 필요합니다.


🎯 목표 및 배경

  • 네이티브 Google Sign-In을 통해 더 빠르고 안정적인 로그인 경험을 제공합니다.
  • 기존 Apple 로그인(expo-apple-authentication)과 대칭되는 Google 로그인을 지원합니다.
  • WebView 내 OAuth 리다이렉트 방식의 불안정성(쿠키/세션 문제)을 해소합니다.

📐 요구사항

  • Google Sign-In 라이브러리 설치 및 Expo 플러그인 설정 (e.g., @react-native-google-signin/google-signin 또는 expo-auth-session)
  • Google Cloud Console에서 OAuth 2.0 클라이언트 ID 생성 (iOS, Android 각각)
  • app.config.ts에 Google Sign-In 관련 플러그인 설정 추가
  • Google 로그인 서비스 모듈 생성 (services/googleAuth.ts)
  • 로그인 성공 시 Google ID 토큰을 백엔드 API에 전송하여 accessToken 획득
  • 획득한 accessTokennativeAuthStore에 저장하고 기존 LOGIN_COMPLETE 후속 플로우(푸시 토큰 등록 등) 수행
  • WebView ↔ 네이티브 브릿지에 GOOGLE_LOGIN 메시지 타입 추가 (웹에서 네이티브 Google 로그인 트리거)
  • iOS / Android 모두 동작 검증

🔍 관련 코드 / 영향 범위

영향 레이어: Service(services/) / Native bridge / App config

관련 파일:

  • app/webview/[path].tsx (line 40-46) — NativeBridgeMessage 타입에 Google 로그인 메시지 추가 필요
  • app/webview/[path].tsx (line 116-137) — LOGIN_COMPLETE 핸들러 — Google 로그인 후 동일 플로우 재사용
  • services/nativeAuthStore.tsaccessToken 저장/조회 — Google 로그인 후에도 동일하게 사용
  • services/pushTokenApi.ts — 로그인 후 푸시 토큰 등록 — Google 로그인 후에도 동일하게 호출
  • app.config.ts (line 8-9, 31) — googleServicesFile 설정 존재 (FCM 용) — Google Sign-In 플러그인 추가 필요
  • constants/constants.tsapiUrl — 백엔드 Google 인증 API 호출 시 사용
  • package.json — 새 의존성 추가 필요

📎 참고 자료

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions