- 이 글에는 자세한 코드나 사용법은 다루지 않음.
- 틀린 부분이 있을 수 있음. 건강한 토론의 댓글은 환영 합니다.
그냥 내가 느낀 점
React
- Nest
등의 조합SDK로 카카오 로그인을 진행하는 경우 위 6개 단계를 2개 단계로 생략하게 된다. 인증코드 요청부터 토큰 전달까지 4개 단계를 SDK가 해주고, 토큰으로 로그인 API를 호출 & 응답 받으면 된다.
SDK로 KakaoOAuth2를 진행하는 경우, 아래와 같이 access_token
을 받아서 바로 API 호출 단계로 넘어간다.
Kakao.Auth.login({
success: res => {
...
Kakao.Auth.setAccessToken(res.access_token);
const csrftoken = Cookies.get('csrftoken');
axios.post('/api/auth/kakao', {
access_token: res.access_token,
headers:{
"Access-Control-Allow-Origin": '*',
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-CSRFToken': csrftoken
},
})
...
},
...
})
/api/auth/kakao
엔드포인트에서는 access_token
을 이용해 아래 경로에서 유저 정보를 받아온다.
https://kapi.kakao.com/v2/user/me
받아온 유저 정보로 아래와 같은 프로세스를 진행한다. 이건 서비스 정책에 따른다. (서비스마다 로직이 다를 수 있다.)
아래와 같은 경로에서 유저는 카카오 로그인을 하게 된다. REDIRECT_URI
는 인가코드를 처리해 줄 URL을 입력한다.
https://kauth.kakao.com/oauth/authorize?response_type=code&client_id={REST_API_KEY}&redirect_uri={REDIRECT_URI}
1번 단계에서 유저가 로그인에 성공하게 되면, REDIRECT_URI
경로로 리다이렉트 된다. 아래 경로와 같이, QueryString 으로 인가코드인 code
값을 받게 된다.
/{REDIRECT_URI}/callback?code=tmwowQ2CCyPfm2_3xcNgW-6VeuGYCw1i6NFD_vbotpP7x8xloxNiDeIcNzUkgtEKzVV6Ngopb1QAAAF-16djpg
전달 받은 인가코드 code
값을 이용해서 kauth.kakao.com/oauth/token
에 토큰을 요청해야 로그인이 완료된다.
passport로 진행하는 경우 callback 엔드포인트에서 3-4 단계는 자동으로 진행된다.
kauth.kakao.com/oauth/token
로부터 토큰을 받아서 로그인 프로세스를 진항한다.
토큰을 받고, https://kapi.kakao.com/v2/user/me
경로에 유저 정보를 요청한다.
await axios.get(
'https://kapi.kakao.com/v2/user/me',
{
headers: { Authorization: `Bearer ${access_token}` },
},
)
받아온 유저 정보로 아래와 같은 프로세스를 진행한다. 이건 서비스 정책에 따른다. (서비스마다 로직이 다를 수 있다.)