로그아웃, 연결끊기를 모두 테스트 해보고 결과를 기록한다.

1. 로그아웃

로그아웃은 토큰만 만료시키므로 리다이렉트 작업을 따로 해줘야한다.

 

2. 연결끊기

음.. 처음에는 무슨 말인지 이해가 잘 안됐는데, 앱 처음시작할 때 사용자 정보 동의를 할텐데, 연결 끊기를 하면 다시 정보동의 창이 뜨게된다. 말그대로 앱과 사용자 계정의 연결을 끊는다.


	@RequestMapping(value="/kakaologout")
	public String logout(HttpSession session) {
		kakaoLogin.logout((String)session.getAttribute("access_token"));
		session.invalidate();
		return "redirect:/";
	}

로그아웃 컨트롤러 뚝딱. 세션에서 엑세스 토큰을 가져와서 넘겨주면 API가 처리하도록하고 이후 세션을 날리고 리다이렉트하는 간단한 컨트롤러

 

	public void logout(String access_Token) {
	    String reqURL = "https://kapi.kakao.com/v1/user/logout";
	    try {
	        URL url = new URL(reqURL);
	        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
	        conn.setRequestMethod("POST");
	        conn.setRequestProperty("Authorization", "Bearer " + access_Token);
	        
	        int responseCode = conn.getResponseCode();
	        System.out.println("responseCode : " + responseCode);
	        
	        BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
	        
	        String result = "";
	        String line = "";
	        
	        while ((line = br.readLine()) != null) {
	            result += line;
	        }
	        System.out.println(result);
	    } catch (IOException e) {
	        e.printStackTrace();
	    }
	}

before
after

로그아웃이 되었군. 이제 연결끊기를 해볼차례

저렇게 보내라고? 오케이.

	@RequestMapping(value="/kakaounlink")
	public String unlink(HttpSession session) {
		kakaoLogin.unlink((String)session.getAttribute("access_token"));
		session.invalidate();
		return "redirect:/";
	}

컨트롤러 뚝딱. unlink호출하고 세션날리고 리다이렉트.

	public void unlink(String access_Token) {
	    String reqURL = "https://kapi.kakao.com/v1/user/unlink";
	    try {
	        URL url = new URL(reqURL);
	        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
	        conn.setRequestMethod("POST");
	        conn.setRequestProperty("Authorization", "Bearer " + access_Token);
	        
	        int responseCode = conn.getResponseCode();
	        System.out.println("responseCode : " + responseCode);
	        
	        BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
	        
	        String result = "";
	        String line = "";
	        
	        while ((line = br.readLine()) != null) {
	            result += line;
	        }
	        System.out.println(result);
	    } catch (IOException e) {
	        e.printStackTrace();
	    }
	}

그렇다. 사실상 로그아웃과 동일한코드. 그럼 뭐가 다르냐?

이렇게 다시 동의를 받는다. 회원탈퇴시 연결끊기를 사용하면 될 것 같다.


 

테스트 해보다가 보니 위처럼 카카오 아이디랑 비밀번호를 입력하는 부분이 나오지 않고 그냥 skip 되었다. 브라우저에 있는 쿠키를 삭제해야 다시 위처럼 카카오 로그인을 진행할 수 있다. 나중에 기억안날까봐 기록.

'개발 > Spring & SpringBoot' 카테고리의 다른 글

Spring 3 RestController 구현  (0) 2022.06.23
카카오 로그인 만들기 2  (0) 2021.05.21
카카오 로그인 만들기 1  (0) 2021.05.21

+ Recent posts