OAuth2 로그인 프로세스는 크게 2가지로 나뉩니다.
- 코드 받기: 카카오계정의 ID/Password 등의 사용자 정보 입력(또는 카카오톡 등을 이용한 간편 인증)을 통해 임시 code를 받습니다.
- 사용자 토큰 받기: 위 1에서 받은 code를 통해 3rd에서 access token을 받습니다.
위 1과정중에 받은 code를 redirect로 전달하게 되는데, cross-site 공격을 막기 위해 state라는 param을 활용하기도 합니다. 해당 param은 사용자의 임시 param등을 전달시에도 간혹 이용됩니다.
사용자가 input state는 기본적으로 encoded가 안되어 있다고 가정하고, redirect시 url decoded된 state를 전달합니다(encode_state 옵션의 디폴트는 false. 즉, 해당 옵션을 주지 않을 경우 false).
때때로는 redirect시 input으로 넣은 state를 사용자가 직접 encode하여 그대로 받기를 원하는 경우가 있습니다. 이럴 경우 encode_state값을 true로 설정(option)하여 요청하면 됩니다.
예) 보통 state에 JSON string을 전달하기 위해 직접 해당 내용의 state를 encode해서 state param으로 요청한 경우, encode_state를 true로 설정하여 요청.
자세한 개발 가이드는 아래의 링크를 참고하세요.