client_id · client_secret에 해당합니다.
1
PKCE 값 만들기
요청마다 새로 생성해야 합니다.
S256만 허용되며 plain은 거부됩니다.verifier는 세션이나 state와 묶어 보관했다가 3단계에서 함께 보냅니다. 43~128자, 허용 문자를 벗어나면 토큰 교환이 invalid_grant로 실패합니다.2
사용자를 동의 화면으로 보내기
사용자 브라우저를 아래 주소로 이동시킵니다.가독성을 위해 줄을 나눴습니다. 실제로는 공백 없이 한 줄로 이어 붙여 보냅니다.사용자가 로그인하고 동의하면 등록한 리다이렉트 URI로 돌아옵니다.
3
코드를 토큰으로 바꾸기
빌더 서버에서 호출합니다. 브라우저에서 호출하면 시크릿 키가 노출됩니다.
redirect_uri는 2단계에서 보낸 값과 글자 단위로 같아야 합니다. code는 5분 안에, 한 번만 쓸 수 있습니다.4
토큰으로 API 호출하기
/api/v1/** 호출도 같은 방식입니다.토큰 갱신하기
Access Token은 15분이면 만료됩니다.연동을 끊을 때
사용자가 연결 해제를 요청하면 토큰을 폐기합니다.자주 만나는 오류
안전을 위해 리다이렉트 URI 검증에 실패하면 사용자에게 400 페이지를 보여 주고, 등록되지 않은 주소로는 절대 리다이렉트하지 않습니다.
운영 시 확인할 것
- 시크릿 키를 브라우저나 모바일 앱 번들에 넣지 마세요. 토큰 교환은 반드시 서버에서 합니다.
state는 요청마다 새로 만들고 콜백에서 검증하세요.- Refresh Token은 사용자별로 안전하게 저장하고, 갱신할 때마다 새 값으로 덮어쓰세요.
- 사용자가 연결을 해제하면 저장된 토큰을 폐기하고 삭제하세요.