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

2022. 8. 18. 16:40·STUDY/SPRING
반응형

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

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

 

반응형
저작자표시 (새창열림)

'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
'STUDY/SPRING' 카테고리의 다른 글
  • 의존성 주입(DI)
  • 카카오 로그인 API 사용하기 - 4(로그인 완료)
  • 카카오 로그인 API 사용하기 -2
  • 카카오 로그인 api 사용하기 -1
3unB
3unB
  • 3unB
    ILLILI
    3unB
  • 전체
    오늘
    어제
    • 분류 전체보기 (158)
      • STUDY (107)
        • JAVA (30)
        • SPRING (29)
        • JSP (11)
        • DATABASE (19)
        • HTML (0)
        • CSS (4)
        • GITHUB (2)
        • ETC (4)
        • 자격증 (1)
        • ERROR (6)
      • PROJECT (6)
        • Personal_Project 01 - commu.. (1)
        • TeamProject - JOINUS (4)
      • EUNB (30)
        • 맛집 (27)
        • 여행 (3)
        • 전세사기 (0)
      • 오블완챌린지 ++ (11)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 짱민지
    • 아랄이
  • 공지사항

  • 인기 글

  • 태그

    전포동 카페
    전포 오꼬노미야끼
    티스토리챌린지
    콩콩팥팥 두부
    속초 해변 숙소
    전포 맛집
    전포동 맛집
    전포 밥집
    속초 숙소 내돈내산
    전포동 핫플
    오블완
    인제 고향집
    망미 조용한 카페
    센텀 신세계백화점 팝업
    전포 신상 맛집
    전포 데이트
    망미 카페
    망미 테린느
    인제 두부
    oracle
    속초 중앙시장 감자전
    mysql
    서면 설야멱
    배열 한 컬럼에 넣기
    망미 바
    Database
    전포 연어덮밥
    alter
    서면 맛집
    콩콩팥팥 맛집
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.0
3unB
카카오 로그인 API 사용하기 - 3
상단으로

티스토리툴바