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

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

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

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바