로그아웃, 연결끊기를 모두 테스트 해보고 결과를 기록한다.
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();
}
}
로그아웃이 되었군. 이제 연결끊기를 해볼차례
저렇게 보내라고? 오케이.
@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' 카테고리의 다른 글
aws sdk로 s3업로드하기 & steam 업로드 (0) | 2024.06.23 |
---|---|
Spring 3 RestController 구현 (0) | 2022.06.23 |
카카오 로그인 만들기 2 (0) | 2021.05.21 |
카카오 로그인 만들기 1 (0) | 2021.05.21 |