Therapist

카카오 로그인 REST API 구현

그래놀라_ 2021. 8. 4. 15:00

사용자가 필수 동의 항목에 모두 동의한 뒤 [동의하고 계속하기] 버튼 누르면, 카카오 인증 서버는 해당 사용자에 대한 인가 코드를 발급해 서비스의 redirect_uri에 전달

 

서비스 서버(우리)는 redirect_uri로 받은 요청을 처리해 인가 코드를 얻거나 상황에 맞는 페이지를 보여주도록 처리해야함

 

 > Request

  • URL
    • GET /oauth/authorize?client_id={REST_API_KEY}&redirect_uri={REDIRECT_URI}&response_type=code HTTP/1.1
  • Parameter

 

 > Response

 

 

 

 

토큰 받기

인가 코드를 받은 뒤, 인가 코드로 액세스 토큰리프레시 토큰을 발급 받는 API

토큰 받기까지 마쳐야 카카오 로그인 완료

 

필수 파라미터들을 담아 POST로 요청

성공시 Redirect URI에 JSON 객체 전달

  • 두가지 종류의 토큰값
  • 초 단위의 만료시간 표함

 

 

 

 


code

 1  액세스 토큰 발급 받기

AuthController.java

String accessToken = userService.getAccessToken(code);

를 통해 access_token을 발급 받아야함

 

 

AuthController.java

spring에서 제공하는 RestTemplate을 이용하여 필요한 파라미터들을 담아서 요청해서 액세스 토큰을 받는다

 

 

 

 2  액세스 토큰을 이용해서 회원 정보 뽑기

사용자 정보 요청 REST API는 사용자 액세스 토큰을 사용하는 방법, 앱 어드민 키를 사용하는 방법 두 가지로 제공됩니다. 어드민 키는 보안에 유의하여 사용해야 하므로 서버에서 호출할 때만 사용합니다.

사용자 액세스 토큰을 헤더(Header)에 담아 GET 또는 POST로 요청합니다.
추가 파라미터를 사용하면 특정 정보만 지정해서 받아오거나 URL 응답 값을 HTTPS로 받을지 지정할 수 있습니다.
Map<String, String> userMap = userService.requestKakaoUserInfo(accessToken);

 

UserService.java

헤더에 알맞는 값 넣어 HttpEntity 생성하여 해당 URL로 요청보냄

 

 >  Response sample

동의항목은 kakao developers에서 설정

 

 

 3   받아온 데이터를 토대로 데이터 객체 생성

http://jsonschema2pojo.org 

 

jsonschema2pojo

Reference properties For each property present in the 'properties' definition, we add a property to a given Java class according to the JavaBeans spec. A private field is added to the parent class, along with accompanying accessor methods (getter and sette

www.jsonschema2pojo.org

예시

위 사이트 이용하여 access token으로 받아온 json을 Dto객체로 생성

import lombok.Data;         // builder, getter, setter 생성해주는 라이브러리

 

UserService.java

 

ObjectMapper를 이용하여 받아온 json 데이터를 생성한 Dto 객체에 값 삽입

* ID는 email + 언더바(_) + 아이디

* 비밀번호는 우리 프로젝트에서 그닥 의미 없기 때문에 랜덤으로 설정