Skip to content

POST /api/v1/auth/google/token

의도

Google ID Token(RS256 JWT)으로 dartbrief JWT를 발급한다. 첫 로그인이면 자동으로 계정 생성.

인증

없음 (로그인 전 호출)

입력

json
{ "id_token": "<Google ID Token>" }

응답

200 OK

json
{ "token": "eyJhbGci..." }

400 Bad Request — id_token 누락

401 Unauthorized — Google 토큰 검증 실패

curl 예제

bash
curl -s -X POST https://api.dartbrief.com/api/v1/auth/google/token \
  -H "Content-Type: application/json" \
  -d '{"id_token":"<Google ID Token>"}' | jq

# 로컬
curl -s -X POST http://localhost:8000/api/v1/auth/google/token \
  -H "Content-Type: application/json" \
  -d '{"id_token":"<Google ID Token>"}' | jq

비즈니스 메모

  • Google ID Token은 Flutter google_sign_in 패키지로 발급
  • 백엔드가 https://oauth2.googleapis.com/tokeninfo?id_token=<token> 에 GET 요청해 Google 서버에 검증 위임 (로컬 RS256 검증 아님, 캐시 없음)
  • tokeninfo 응답의 aud 필드가 GOOGLE_ALLOWED_CLIENT_IDS 목록 중 하나와 일치해야 함
    • iOS dev: 532121942538-6lgie0c9fk22occs4q8thc83o70sms5n.apps.googleusercontent.com
    • iOS prod: 532121942538-8qhhpaue4strhjgte0dpp77scnf0dlle.apps.googleusercontent.com
    • Android: 532121942538-dqe4fd5dinb73vrgmcvl192vl6bol6us.apps.googleusercontent.com
  • oauth_provider = 'GOOGLE', oauth_id = sub claim 으로 users 테이블 upsert
  • Android에서 Apple 로그인 버튼 없음 (Google만 지원)