OAuth API모바일 네이티브 로그인 API
POST /ai/oauth/native/facebook
Facebook 네이티브 SDK 의 accessToken 으로 로그인 (+ debug_token app_id 검증)
Facebook 네이티브 로그인
iOS / Android Facebook SDK (FBSDK) 가 발급한 accessToken 을 받아 발급 app_id 를 검증한 뒤 자체 JWT 를 발급합니다.
| 항목 | 값 |
|---|---|
| 메서드 | POST |
| 경로 | /ai/oauth/native/facebook |
| 인증 | 없음 |
요청
POST /ai/oauth/native/facebook
Content-Type: application/json
{
"accessToken": "<Facebook accessToken>",
"device": "APP"
}| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
accessToken | string | 예 | Facebook SDK 가 발급한 accessToken |
device | string | 예 | 항상 "APP" |
검증 동작
다른 provider 와 달리 Facebook 은 app_id 검증 단계가 추가됩니다 — mobile app_id 가 web 과 다를 수 있고, 다른 앱이 발급한 token 도용을 방지하기 위함.
- debug_token 호출:
https://graph.facebook.com/debug_token?input_token={accessToken}&access_token={clientId}|{clientSecret}로 token 메타 조회 - app_id 일치 확인: 반환된
data.app_id가 백엔드의FACEBOOK_MOBILE_APP_ID(또는 yml fallback 으로 web client_id) 와 일치하는지 확인. 불일치 시APP_ID_MISMATCH로 거부 - user info 조회:
https://graph.facebook.com/me?fields=id,name,email&access_token=...로 사용자 정보 추출 - 회원가입 또는 로그인 처리
사전 준비: Meta for Developers → 앱 설정 → iOS Bundle ID / Android 키해시 등록.
mobile 전용 앱을 별도 생성해 보안을 강화하려면 환경변수 FACEBOOK_MOBILE_APP_ID 를 설정.
미설정 시 web sns.facebook.client.id 로 fallback (web/mobile 같은 app 사용 — 보안 약간 약함).
응답
성공 (200 OK)
{
"memberId": "10215000000000000",
"accessToken": "eyJhbGciOiJIUzI1NiJ9...",
"refreshToken": "eyJhbGciOiJIUzI1NiJ9...",
"isFirstLogin": false
}| 필드 | 타입 | 설명 |
|---|---|---|
memberId | string | Facebook user ID |
accessToken | string | Glowb JWT access token |
refreshToken | string | Glowb JWT refresh token ({memberId}:app 키 저장) |
isFirstLogin | boolean | 신규 회원가입 여부 |
에러
| HTTP | code | 발생 조건 |
|---|---|---|
| 400 | OAUTH_001 | accessToken 누락 |
| 400 | OAUTH_002 | device 누락 또는 WEB |
| 401 | OAUTH_007 | Facebook API 가 accessToken 거부 |
| 401 | OAUTH_008 | debug_token 의 app_id 가 mobile app_id 와 불일치 (다른 앱이 발급한 token 도용) |
| 500 | OAUTH_009 | Facebook API 응답 파싱 실패 또는 일시 장애 |