Skip to main content
사용자 동의를 받아 API를 호출하기까지의 전 과정입니다. 시작하기 전에 개발자 콘솔에서 OAuth 클라이언트 앱을 등록하고 App Key · 시크릿 키 · 리다이렉트 URI를 준비해 주세요. App Key와 시크릿 키가 OAuth 표준 용어의 client_id · client_secret에 해당합니다.
1

PKCE 값 만들기

요청마다 새로 생성해야 합니다. S256만 허용되며 plain은 거부됩니다.
verifier는 세션이나 state와 묶어 보관했다가 3단계에서 함께 보냅니다. 43~128자, 허용 문자를 벗어나면 토큰 교환이 invalid_grant로 실패합니다.
2

사용자를 동의 화면으로 보내기

사용자 브라우저를 아래 주소로 이동시킵니다.
가독성을 위해 줄을 나눴습니다. 실제로는 공백 없이 한 줄로 이어 붙여 보냅니다.사용자가 로그인하고 동의하면 등록한 리다이렉트 URI로 돌아옵니다.
콜백에서 state가 보낸 값과 같은지 반드시 확인하세요. 확인하지 않으면 CSRF에 취약해집니다. 그리고 code뿐 아니라 error 파라미터도 함께 확인해야 합니다 — 사용자가 거부하면 error가 담겨 옵니다.
3

코드를 토큰으로 바꾸기

빌더 서버에서 호출합니다. 브라우저에서 호출하면 시크릿 키가 노출됩니다.
redirect_uri는 2단계에서 보낸 값과 글자 단위로 같아야 합니다. code는 5분 안에, 한 번만 쓸 수 있습니다.
4

토큰으로 API 호출하기

사용자 컨텍스트가 필요한 /api/v1/** 호출도 같은 방식입니다.

토큰 갱신하기

Access Token은 15분이면 만료됩니다.
응답에 새 refresh_token이 함께 옵니다. 반드시 저장하고 이전 값은 버리세요. Refresh Token은 쓸 때마다 교체되므로 이전 값으로 다시 요청하면 실패합니다.

연동을 끊을 때

사용자가 연결 해제를 요청하면 토큰을 폐기합니다.

자주 만나는 오류

안전을 위해 리다이렉트 URI 검증에 실패하면 사용자에게 400 페이지를 보여 주고, 등록되지 않은 주소로는 절대 리다이렉트하지 않습니다.

운영 시 확인할 것

  • 시크릿 키를 브라우저나 모바일 앱 번들에 넣지 마세요. 토큰 교환은 반드시 서버에서 합니다.
  • state는 요청마다 새로 만들고 콜백에서 검증하세요.
  • Refresh Token은 사용자별로 안전하게 저장하고, 갱신할 때마다 새 값으로 덮어쓰세요.
  • 사용자가 연결을 해제하면 저장된 토큰을 폐기하고 삭제하세요.