반응형
이전 포스팅 : 카카오랑 연결
https://3unbbb.tistory.com/105
카카오 로그인 API 사용하기 -2
이전 포스트에서 카카오 로그인 API를 사용하기 위한 기본 설정 & 전체적인 흐름을 봤다. https://3unbbb.tistory.com/104 카카오 로그인 api 사용하기 -1 팀프로젝트에서 해보고 싶었던 sns 로그인 api 포트
3unbbb.tistory.com
발급받은 코드로 토큰을 받아야 하는데
위 형식에 맞게 코드를 작성해주면 됨(required 필수)
요청은 service에서 httpURLConnection으로 처리
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
토큰정보를 받아왔으니 이제 내 서비스에서 이 정보로 회원가입 등등을 처리해야 함
아래 블로그를 참고해서 작성했습니다!
[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
반응형
'STUDY > SPRING' 카테고리의 다른 글
의존성 주입(DI) (0) | 2022.10.28 |
---|---|
카카오 로그인 API 사용하기 - 4(로그인 완료) (0) | 2022.08.18 |
카카오 로그인 API 사용하기 -2 (1) | 2022.08.16 |
카카오 로그인 api 사용하기 -1 (0) | 2022.08.13 |
ERROR: org.springframework.web.context.ContextLoader - Context initialization failed (0) | 2022.07.01 |