본문 바로가기

STUDY/SPRING

카카오 로그인 API 사용하기 - 3

반응형

이전 포스팅 : 카카오랑 연결

https://3unbbb.tistory.com/105

 

카카오 로그인 API 사용하기 -2

이전 포스트에서 카카오 로그인 API를 사용하기 위한 기본 설정 & 전체적인 흐름을 봤다. https://3unbbb.tistory.com/104 카카오 로그인 api 사용하기 -1 팀프로젝트에서 해보고 싶었던 sns 로그인 api 포트

3unbbb.tistory.com

 

 

발급받은 코드로 토큰을 받아야 하는데

 

위 형식에 맞게 코드를 작성해주면 됨(required 필수)

 

이렇게 요청하면 >> 이렇게 받아옴

 

요청은 service에서 httpURLConnection으로 처리

서비스로 코드 정보 넘겨줌(controller)

 

OauthService.java

	public String getAccessToken(String code) throws IOException {
			
			System.out.println("getAccessToken(Service) 호출");
		
			String client_id="9c2d5efce4c881343385d90eb3e693e4";
			String redirect_uri="http://localhost:8088/oauth";
			String authorization_code = code;
			String url ="https://kauth.kakao.com/oauth/token";
			
			String access_token = null;
			String refresh_token = null;
			
			try {
				URL con_url = new URL(url);
				
				//해당 주소 페이지로 접속 & 단일 http로 접속하기 위해 캐스팅
				HttpURLConnection conn = (HttpURLConnection) con_url.openConnection();
				
				//post요청
				conn.setRequestMethod("POST");
				//POST or PUT 방식으로 요청을 보내려면 output을 true로 설정해야 함
				conn.setDoOutput(true);
				
				//InputStream 으로 응답 헤더와 메시지를 읽어들이는 옵션 정의
				//OutputStream 으로 post 데이터를 넘겨주는 옵션 정의
				
				BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream()));
				StringBuilder sb = new StringBuilder();
				
				sb.append("grant_type=authorization_code");
				sb.append("&client_id="+client_id);
				sb.append("&redirect_uri="+redirect_uri);
				sb.append("&code="+authorization_code);
				
				//write메소드로 stringBuilder로 작성된 파라미터정보를 전달
				bw.write(sb.toString());
				
				//스트림 버퍼 비위주기
				bw.flush();
				
				//response가 200이면 성공
				int responseCode = conn.getResponseCode();
				System.out.println("responseCode : " + responseCode);
				
				//inputStream 정보 받아오기
				BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
				
				String line = "";
				String result = "";
				
				while ((line = br.readLine()) != null) {
					result += line;
				}
				
				System.out.println("responseBody : "+result);
				
				//Json형식의 데이터를 파싱
				JsonParser parser = new JsonParser();
				JsonElement element = parser.parse(result);
				
				access_token = element.getAsJsonObject().get("access_token").getAsString();
				refresh_token = element.getAsJsonObject().get("refresh_token").getAsString();
				
				System.out.println("access_token : "+access_token);
				System.out.println("refresh_token : "+refresh_token);
				
				
				//스트림 닫기
				br.close();
				bw.close();
				
				
			} catch (MalformedURLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			return access_token;

		
	}

 

컨트롤러에서 연결

 

>>>>결과

getAccessToken(Service) 호출
responseCode : 200
responseBody : {
	"access_token":"8JZCUZFhXD-gmJdXGpg6f95_g1z4yQeTz0LcpDsbCilv1AAAAYKv0f84",
    "token_type":"bearer",
    "refresh_token":"-W-6I9MdSlDPtYRvjGpx0fv6LJX-B8GcT-bAYHB4Cilv1AAAAYKv0f83",
    "expires_in":21599,
    "scope":"birthday account_email profile_image gender profile_nickname",
    "refresh_token_expires_in":5183999}
access_token : 8JZCUZFhXD-gmJdXGpg6f95_g1z4yQeTz0LcpDsbCilv1AAAAYKv0f84
refresh_token : -W-6I9MdSlDPtYRvjGpx0fv6LJX-B8GcT-bAYHB4Cilv1AAAAYKv0f83

 

토큰정보를 받아왔으니 이제 내 서비스에서 이 정보로 회원가입 등등을 처리해야 함

 

 

아래 블로그를 참고해서 작성했습니다!

https://antdev.tistory.com/36

 

[Kakao Login API] 카카오 로그인 API 서비스 구현 (Spring Boot 환경에서 카카오 로그인 API RESTful방식으로

2019/03/23 - [OAuth/Kakao Login API] - [Kakao Login API] 카카오 계정의 유저 정보 받아오기 및 마무리 (Spring Boot 환경에서 카카오 로그인 API RESTful방식으로 연동하기 -4장 마무리) (0) 2019/03/22 - [OA..

antdev.tistory.com

 

반응형