package com.care.dbQuiz.member;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
import org.springframework.stereotype.Service;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

@Service
public class KakaoService {

	public void getAccessToken(String code) {
		String reqUrl = "https://kauth.kakao.com/oauth/token";
		String reqParam = "grant_type=authorization_code";
		reqParam += "&client_id=231dcfa0f6c9f5d6db11c3d33c9b755c";
		reqParam += "&redirect_uri=http://localhost:8065/dbQuiz/kakaoLogin";
		reqParam += "&code="+code;
		
		HttpURLConnection conn;
		try {
			URL url = new URL(reqUrl); //POST 요청에 필요로 요구하는 파라미터 스트림을 통해 전송
			conn = (HttpURLConnection)url.openConnection();
			conn.setRequestMethod("POST"); //POST 요청을위해 기본값 false에서 setDoOut으로 true변경
			conn.setDoOutput(true);//post 매소드를 이용해서 데이터를 전달하기위한설정
			
			//기본 OutputStram을 통해 문자열로 처리할수있는 OutputStreamWriter변환후 처리속도를 빠르게 처리하기위해
			//BufferedWriter변환한다
			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream()));
			bw.write(reqParam);
			bw.flush();
			
			int responseCode = conn.getResponseCode(); //결과 코드가 200이면 성공
			System.out.println("responseCode:"+responseCode);
			
			// 요청을 통해 얻은 JSON타입의 Response 메세지 읽어오기 (반복문)
//			BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
//			String line ="", result="";
//			while((line = br.readLine()) != null){
//				result += line;
//			}
			
			// 요청을 통해 얻은 JSON타입의 Response 메세지 읽어오기
			InputStreamReader isr = new InputStreamReader(conn.getInputStream());
			ObjectMapper om = new ObjectMapper();
			Map<String, String> map = null;
			map = om.readValue(isr, new TypeReference<Map<String, String>>() {} );
			
			System.out.println("access_token : "+map.get("access_token"));
			System.out.println("scope"+map.get("scope"));
			
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}
//curl -v -X POST "https://kauth.kakao.com/oauth/token" \
//-H "Content-Type: application/x-www-form-urlencoded" \
//-d "grant_type=authorization_code" \
//-d "client_id=${REST_API_KEY}" \
//--data-urlencode "redirect_uri=${REDIRECT_URI}" \
//-d "code=${AUTHORIZE_CODE}"

'프로그래밍 > HTML' 카테고리의 다른 글

69-1  (0) 2023.07.20
68-4  (0) 2023.07.18
68-2  (0) 2023.07.18
68-1  (0) 2023.07.18
67-2  (0) 2023.07.17

+ Recent posts