본문으로 건너뛰기

Google 로그인

Google 계정으로 로그인합니다, 서버가 PKCE 인가 코드 흐름을 처리합니다

POST /v1/auth/google/start
GET  /v1/auth/google/callback

인증

인증 없음, 시작 요청은 콘솔 세션 쪽 요청이라 같은 출처의 Origin(또는 Referer) 헤더가 있어야 합니다, 없으면 403 insufficient_permission(cross-site request blocked)입니다

흐름

  1. POST /v1/auth/google/start가 { "url": "https://accounts.google.com/…" }를 돌려주고 10분짜리 바인딩 쿠키 xci_google_bind를 심습니다
  2. 브라우저가 그 URL로 이동해 Google에서 동의합니다
  3. Google이 GET /v1/auth/google/callback?code=…&state=…로 돌아오면 서버가 토큰을 교환하고 콘솔로 302 리다이렉트합니다
    • 이미 있는 계정이면 로그인 쿠키를 심고 <콘솔>로
    • 확인된 이메일인데 계정이 없으면 <콘솔>/signup으로(가입 토큰 쿠키 포함)
    • Google이 이메일을 확인해 주지 않으면 그 이메일로 매직 링크를 보내고 <콘솔>/login으로
  4. 실패하면 <콘솔>/login?error=<코드>로 돌아옵니다
error 값뜻
invalid_statestate가 없거나 만료, 바인딩 쿠키 불일치
cancelled사용자가 Google에서 취소
invalid_code, exchange_failed인가 코드 교환 실패
google_mismatch이 이메일 계정에 이미 다른 Google 계정이 연결됨
email_requiredGoogle이 이메일을 주지 않음
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

다음 단계