내부 설정 가이드

SNS 소셜 로그인 설정

앱 로그인에 쓰는 Google / Kakao / Naver / Facebook / Apple이 동작하려면 각 콘솔에서 키를 발급하고 앱·서버에 넣어야 합니다. 키가 비어 있으면 해당 버튼은 “연동 키가 설정되지 않았습니다”가 뜹니다.

목차

  1. 동작 방식과 고정값
  2. 값을 넣는 위치
  3. Google
  4. Kakao
  5. Naver
  6. Facebook
  7. Apple
  8. 체크리스트

1. 동작 방식과 고정값

앱이 각 SNS SDK로 로그인 → provider_token을 Chefie API POST /auth/login (또는 회원가입)으로 보냅니다.

앱에서 이미 고정된 값

항목
Android 패키지명com.chefiev2
앱 표시 이름Chefie
Naver iOS URL Schemechefiev2
권장 iOS Bundle IDcom.chefiev2
API 베이스https://www.chefie.at/backend/api
Google만 서버에서 ID 토큰 audience를 검증합니다. Kakao / Naver / Facebook / Apple은 현재 앱 토큰으로 UID를 만듭니다. Apple을 안전하게 쓰려면 나중에 서버에서 identity token(JWT)의 aud·서명을 검증하는 것이 좋습니다. 앱 쪽 키는 반드시 채워야 버튼이 동작합니다.

2. 값을 넣는 위치

파일 역할
mobile-app/src/constants/socialAuthSecrets.ts 앱 OAuth 키 (Kakao / Naver / Google / Facebook / Apple 서비스 ID). 비면 해당 버튼이 실패합니다.
backend/.env → GOOGLE_WEB_CLIENT_ID Google ID 토큰의 audience 검증. 앱의 googleWebClientId와 완전히 동일해야 합니다.
backend/.env → APPLE_* Apple identity token 검증용(권장). 아래 Apple 절 참고.
export const SOCIAL_AUTH_SECRETS = {
  kakaoAppKey: '',
  naverConsumerKey: '',
  naverConsumerSecret: '',
  googleWebClientId: '',
  facebookAppId: '',
  appleServiceId: '',
} as const;

키를 넣은 뒤에는 Android 앱을 다시 빌드해야 합니다. 서버 .env만 바꾼 경우 PHP/웹서버 재시작이 필요할 수 있습니다.

3. Google — 필요한 값과 발급

필요한 값

어디에형태
OAuth 2.0 클라이언트 ID (웹 애플리케이션) googleWebClientId + 서버 GOOGLE_WEB_CLIENT_ID xxxx.apps.googleusercontent.com
OAuth 2.0 클라이언트 ID (Android) Google 콘솔에만 등록 (앱 코드에는 안 넣음) 패키지 com.chefiev2 + 서명 SHA-1
웹 클라이언트 ID가 핵심입니다. Android 클라이언트는 Play 서비스가 앱을 식별할 때 필요하고, 앱 TS 파일에는 넣지 않습니다.

발급 방법

  1. Google Cloud Console에서 프로젝트 생성(또는 선택).
  2. API 및 서비스 → OAuth 동의 화면 설정. 외부 사용자면 테스트 사용자를 추가.
  3. API 및 서비스 → 사용자 인증 정보 → 사용자 인증 정보 만들기 → OAuth 클라이언트 ID
  4. 애플리케이션 유형 웹 애플리케이션 생성. 나온 클라이언트 ID를 앱·서버에 동일하게 넣기.
  5. 같은 화면에서 유형 Android도 하나 더 생성.
    • 패키지 이름: com.chefiev2
    • SHA-1: 디버그/릴리스 키스토어 지문

SHA-1 확인

keytool -list -v -keystore mobile-app/android/app/debug.keystore -alias androiddebugkey -storepass android -keypass android

릴리스 키스토어를 쓰면 그 파일의 SHA-1도 Android 클라이언트에 추가해야 합니다. Play App Signing을 쓰면 Play Console의 앱 서명 인증서 SHA-1도 등록합니다.

4. Kakao — 필요한 값과 발급

필요한 값

어디에
네이티브 앱 키 (Native App Key)kakaoAppKey

발급 방법

  1. Kakao Developers 로그인 후 애플리케이션 추가.
  2. 앱 키에서 Native App Key 복사 → kakaoAppKey.
  3. 플랫폼 → Android 추가: 패키지명 com.chefiev2, 키 해시(Key Hash) 등록.
  4. 제품 설정 → 카카오 로그인 활성화. 동의 항목에 닉네임/프로필 이미지(필요 시 이메일) 포함.

Android 키 해시

keytool -exportcert -alias androiddebugkey -keystore mobile-app/android/app/debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64

릴리스 키스토어로도 같은 명령을 돌려 키 해시를 추가합니다.

6. Facebook — 필요한 값과 발급

필요한 값

어디에
앱 ID (App ID)facebookAppId

비한국어 화면에서만 Facebook 버튼이 나옵니다. 한국어에서는 Kakao/Naver/Google만 보입니다.

발급 방법

  1. Meta for Developers에서 앱 만들기 (소비자 유형).
  2. 제품에서 Facebook 로그인 추가.
  3. 설정 → 기본: 앱 ID 복사 → facebookAppId.
  4. Android 플랫폼 추가: 패키지 com.chefiev2, 클래스 com.chefiev2.MainActivity, 키 해시 등록.
  5. 개발 중이면 역할에 테스트 사용자를 넣습니다. 공개 배포 시 앱 검수(로그인 권한)가 필요할 수 있습니다.

7. Apple — 필요한 값과 발급

Apple은 유료 Apple Developer Program(연간)이 있어야 합니다. iOS 앱이 다른 SNS 로그인을 제공하면 App Store 심사에서 Sign in with Apple을 요구하는 경우가 많습니다.

필요한 값

어디에형태 / 비고
Bundle ID (App ID) Xcode / Apple Developer Identifiers com.chefiev2
Team ID 서버 검증용 APPLE_TEAM_ID Membership 상단 10자
Services ID (웹/Android용 Client ID) appleServiceId, 서버 APPLE_CLIENT_ID 예: com.chefiev2.signin. identity token의 aud
Key ID + .p8 개인키 서버만. APPLE_KEY_ID, APPLE_PRIVATE_KEY Keys에서 Sign in with Apple용 키. 한 번만 다운로드
Return URL Services ID → Sign in with Apple 설정 웹/Android 콜백. 예: https://www.chefie.at/auth/apple/callback
앱이 서버로 보내는 토큰 provider_token iOS: identity token(JWT). 액세스 토큰만 보내면 안 됩니다.
iOS 네이티브는 Bundle ID + Capability만으로 로그인할 수 있습니다. Android·웹에서 Apple 로그인을 쓰려면 Services ID + Return URL이 필요합니다.

발급 방법 (Apple Developer)

  1. Apple DeveloperIdentifiers.
  2. App IDs에서 iOS 앱 ID 생성(또는 선택). Bundle ID는 com.chefiev2 권장.
  3. Capability에서 Sign in with Apple 체크 후 저장.
  4. Services IDs 생성 (예: com.chefiev2.signin).
    • Sign in with Apple 활성화
    • Primary App ID를 위에서 만든 App ID로 연결
    • Domains: www.chefie.at (필요 시 chefie.at)
    • Return URLs: HTTPS 콜백 주소 (예: https://www.chefie.at/auth/apple/callback)
  5. Keys → 키 만들기 → Sign in with Apple 활성화 → 같은 App ID에 연결.
    • Key ID 기록
    • .p8 파일은 한 번만 받을 수 있으니 안전한 곳에 보관
  6. Membership에서 Team ID 확인.
  7. Xcode: Signing & Capabilities에 Sign in with Apple 추가. entitlementscom.apple.developer.applesignin 가 생깁니다.

서버 .env 예시 (검증 연동 시)

APPLE_CLIENT_ID=com.chefiev2.signin
APPLE_TEAM_ID=
APPLE_KEY_ID=
APPLE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----"

서버는 Apple identity token(JWT)의 iss(appleid.apple.com)와 sub, 만료(exp)를 확인합니다. 운영에서는 Services ID를 aud와 맞추고 Apple JWKS 서명 검증을 추가하는 것이 더 안전합니다.

이메일은 사용자가 “내 이메일 숨기기”를 고르면 privaterelay.appleid.com 로 옵니다. 이름은 최초 로그인 한 번만 내려오므로 회원가입 응답에서 저장해야 합니다. .p8 키와 Team ID는 HTML·Git에 올리지 마세요.

8. 체크리스트

  1. Google 웹 클라이언트 ID를 앱과 서버에 같은 문자열로 넣었는가.
  2. Google Android 클라이언트에 com.chefiev2 + SHA-1이 있는가.
  3. Kakao Native App Key + 패키지 + 키 해시가 있는가.
  4. Naver Client ID/Secret + 패키지(및 iOS scheme chefiev2)가 있는가.
  5. 해외 언어용 Facebook App ID + 패키지 + 키 해시가 있는가.
  6. Apple: App ID에 Sign in with Apple, (웹/Android면) Services ID + Return URL, Key(.p8)+Team ID가 있는가.
  7. 키 반영 후 APK/IPA를 다시 빌드했는가.
  8. 서버 GOOGLE_WEB_CLIENT_ID 반영 후 로그인 API가 PHP fatal 없이 JSON을 주는가.
이 페이지는 내부 가이드입니다. 실제 비밀키·Client Secret은 HTML에 적지 마세요. 값이 비어 있는 현재 상태에서는 SNS 버튼이 동작하지 않는 것이 정상입니다.