앱 로그인에 쓰는 Google / Kakao / Naver / Facebook / Apple이 동작하려면 각 콘솔에서 키를 발급하고 앱·서버에 넣어야 합니다. 키가 비어 있으면 해당 버튼은 “연동 키가 설정되지 않았습니다”가 뜹니다.
앱이 각 SNS SDK로 로그인 → provider_token을 Chefie API POST /auth/login (또는 회원가입)으로 보냅니다.
login_type=apple을 이미 받습니다. 앱 버튼·SDK는 연동 시 추가합니다.| 항목 | 값 |
|---|---|
| Android 패키지명 | com.chefiev2 |
| 앱 표시 이름 | Chefie |
| Naver iOS URL Scheme | chefiev2 |
| 권장 iOS Bundle ID | com.chefiev2 |
| API 베이스 | https://www.chefie.at/backend/api |
aud·서명을 검증하는 것이 좋습니다.
앱 쪽 키는 반드시 채워야 버튼이 동작합니다.
| 파일 | 역할 |
|---|---|
| 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/웹서버 재시작이 필요할 수 있습니다.
| 값 | 어디에 | 형태 |
|---|---|---|
| OAuth 2.0 클라이언트 ID (웹 애플리케이션) | 앱 googleWebClientId + 서버 GOOGLE_WEB_CLIENT_ID |
xxxx.apps.googleusercontent.com |
| OAuth 2.0 클라이언트 ID (Android) | Google 콘솔에만 등록 (앱 코드에는 안 넣음) | 패키지 com.chefiev2 + 서명 SHA-1 |
com.chefiev2keytool -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도 등록합니다.
| 값 | 어디에 |
|---|---|
| 네이티브 앱 키 (Native App Key) | 앱 kakaoAppKey |
kakaoAppKey.com.chefiev2, 키 해시(Key Hash) 등록.keytool -exportcert -alias androiddebugkey -keystore mobile-app/android/app/debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64
릴리스 키스토어로도 같은 명령을 돌려 키 해시를 추가합니다.
| 값 | 어디에 |
|---|---|
| 앱 ID (App ID) | 앱 facebookAppId |
비한국어 화면에서만 Facebook 버튼이 나옵니다. 한국어에서는 Kakao/Naver/Google만 보입니다.
facebookAppId.com.chefiev2, 클래스 com.chefiev2.MainActivity, 키 해시 등록.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). 액세스 토큰만 보내면 안 됩니다. |
com.chefiev2 권장.com.chefiev2.signin).
www.chefie.at (필요 시 chefie.at)https://www.chefie.at/auth/apple/callback).p8 파일은 한 번만 받을 수 있으니 안전한 곳에 보관entitlements에
com.apple.developer.applesignin 가 생깁니다.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에 올리지 마세요.
com.chefiev2 + SHA-1이 있는가.chefiev2)가 있는가.GOOGLE_WEB_CLIENT_ID 반영 후 로그인 API가 PHP fatal 없이 JSON을 주는가.