240612
오늘의 학습
● 1. 카카오 소셜 로그인 API
● 2. API 요청하기
● 3. 인가코드 받기
● 4. 토큰 발급 받기
● 5. 사용자 정보 가져오기 ( 토큰을 이용 )
카카오 소셜 로그인 API
모든 출처와 참고는 카카오 로그인 REST API 문서에서 가지고 왔습니다.
(출처) API 문서 - https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api
Kakao Developers
카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.
developers.kakao.com
카카오 소셜 로그인 API 이용하기 전 필수로 해야할 일
1. 애플리케이션 추가
2. 추가가 성공적으로 되었으면 카테고리에서 앱 키로 이동 후 REST API 키를 확인한다.
( 해당 앱 키는 인증키이며, 카카오 서버로 요청을 보낼 때 사용되는 키이다. 무조건 있어야 한다. )
요청 보내기
카카오 소셜 로그인을 구현하기 위해서는 어떠한 요청과 어떤 걸 발급 받는지 알아야 한다.
카카오로 로그인을 할 시 인가 코드 발급은 필수이며, 발급이 된 인가 코드를 통해 토큰 발급 또한 필수이다.
( 이러한 과정을 통해 로그인이 완료가 된다. )
1. 인가 코드 받기 ( 토큰 발급을 위한 코드 )
공식 문서를 보면 위의 사진처럼 인가 코드를 받기 위해선 해당 API로 요청을 보내줘야 한다.
그 후 쿼리 파라미터 방식을 이용해 필수로 넣어줘야 할 key&value 값들을 넣어서 요청을 보내줘야 한다.
그러면 redirect_uri에 해당하는 api로 code라는 value에 인증 코드를 넣어서 요청을 보내주게 된다.
( 넘어온 인증 코드를 통해 토큰을 발급을 받을 수 있다. )
꿀팁, 해당 인가코드를 요청하는 api로 쿼리 파라미터 형식으로 필수 값을 넣어 요청을 보내게 되면 카카오 서버에서 로그인 페이지 따로 반환을 해주면서 쿼리 파라미터 응답으로 요청할 때 넣은 값을 그대로 다시 돌려주게 된다.
그 후, 카카오 로그인 페이지에서 로그인을 할 시 redirect_uri 에 넣은 api로 인가 코드를 넣어 요청을 보내게 된다.
돌아온 인가코드를 통해 토큰을 발급 받는 순간, 로그인이 되는 방식이다.
2. 토큰 받기 ( 요청 )
토큰을 받기 위해서는 위의 공식 문서 사진처럼 POST 방식으로 해당 URL로 요청을 보내면 된다.
요청을 보낼 때 필수로 요청 헤더 Content-type을 위와 같이 지정을 해줘야 하며, 요청 본문(Body)에는 grant_type, client_id, redirect_uri, code 를 필수적으로 보내줘야한다. 이때, code는 받아온 기존에 인증 코드를 넣어주게 된다.
3. 토큰 받기 ( 응답 )
요청에 대한 응답으로는 token_type인 bearer과 access_token 토큰 값을 받을 수 있다. 또한, expires_in(토큰 만료 시간),
refresh_token, refresh_token_expires_in(리프레시 토큰 만료시간) 등등 여러개가 넘어오게 된다.
( 해당 토큰을 이용해서 여러가지 요청을 보낼 수 있게된다. 그 중 사용자 정보 가져오기를 할 것이다. )
4. 사용자 정보 가져오기 ( 카카오 계정 정보 )
위와 같이 헤더에 필수값을 넣어 요청을 보내게 되면 해당 카카오 계정의 사용자 정보를 가져와서 이용할 수 있게 된다.
이후, 넘어오는 responese는 json 문자열로 들어오며, 해당 문자열을 ObjectMapper를 이용해 간편하게 json 문자열의 값을 뽑아서 사용할 수 있게 된다.
# 오늘의 회고
오늘은 카카오에서 제공을 해주는 오픈API인 소셜로그인을 배웠는데 좀 더 자세히 알고싶은 생각에 카카오 api 공식문서를 참고하여 어떠한 방식으로 API를 요청해야하고 응답받는지 알 수 있어서 좋았습니다. 스스로 공식문서를 참고하면서 공부를 하니 동작 흐름에 대해 더욱 쉽게 이해를 할 수 있어서 좋았다.
'⛺스파르타코딩클럽' 카테고리의 다른 글
내일배움캠프 41일차 TIL - Spring AOP (1) | 2024.06.14 |
---|---|
내일배움캠프 40일차 TIL - Spring Test (0) | 2024.06.13 |
내일배움캠프 38일차 TIL - 뉴스피드 프로젝트 (0) | 2024.06.12 |
내일배움캠프 37일차 TIL - 시큐리티 수정 중 (2) | 2024.06.10 |
내일배움캠프 36일차 TIL - 스프링 빈 라이프사이클 (0) | 2024.06.07 |