Google 로그인
Google 계정으로 로그인합니다, 서버가 PKCE 인가 코드 흐름을 처리합니다
POST /v1/auth/google/start
GET /v1/auth/google/callback인증
인증 없음, 시작 요청은 콘솔 세션 쪽 요청이라 같은 출처의 Origin(또는 Referer) 헤더가 있어야 합니다, 없으면 403 insufficient_permission(cross-site request blocked)입니다
흐름
POST /v1/auth/google/start가{ "url": "https://accounts.google.com/…" }를 돌려주고 10분짜리 바인딩 쿠키xci_google_bind를 심습니다- 브라우저가 그 URL로 이동해 Google에서 동의합니다
- Google이
GET /v1/auth/google/callback?code=…&state=…로 돌아오면 서버가 토큰을 교환하고 콘솔로 302 리다이렉트합니다- 이미 있는 계정이면 로그인 쿠키를 심고
<콘솔>로 - 확인된 이메일인데 계정이 없으면
<콘솔>/signup으로(가입 토큰 쿠키 포함) - Google이 이메일을 확인해 주지 않으면 그 이메일로 매직 링크를 보내고
<콘솔>/login으로
- 이미 있는 계정이면 로그인 쿠키를 심고
- 실패하면
<콘솔>/login?error=<코드>로 돌아옵니다
| error 값 | 뜻 |
|---|---|
invalid_state | state가 없거나 만료, 바인딩 쿠키 불일치 |
cancelled | 사용자가 Google에서 취소 |
invalid_code, exchange_failed | 인가 코드 교환 실패 |
google_mismatch | 이 이메일 계정에 이미 다른 Google 계정이 연결됨 |
email_required | Google이 이메일을 주지 않음 |
account_disabled | 비활성화된 계정 |
rate_limited, mail_unavailable | 확인 메일 전송 제한 또는 실패 |
login_unavailable | 서버에 Google 로그인이 설정되지 않음 |
예시
curl -X POST "https://xenoci.com/api/runner/v1/auth/google/start" \
-H "Origin: https://xenoci.com" \
-c cookies.txt