[Kakao] 카카오 로그인 API - 3. 로그아웃 구현

2021. 7. 16. 12:57·REST API

 

목차
1. 구현 절차
2. 실행 예시
3. 전체 코드

 

 

이전 게시글에서 로그인까지 구현했습니다.
이번엔 이어서 로그아웃 구현해보겠습니다.

 

다만 실습 중인 웹 페이지 이외에도 카카오 로그인이 되어있을 경우
로그아웃 후 재로그인을 누르면 이미 로그인된 카카오 계정으로 자동 로그인될 수 있습니다.

2020년 10월 경에 카카오에서 업데이트를 해주긴 했습니다. (참고: https://github.com/kakao/kakao_flutter_sdk/issues/29)
이전에 로그인했던 계정으로 재로그인할지, 아니면 다른 계정으로 로그인할지 물어보는 창이 생겼습니다.
제가 원하는 건 완전히 초기화된 로그인 창이 나오는 것입니다.
그렇게는 되지 않기 때문에 일단은 업데이트 전 버전으로 그냥 진행해보겠습니다.

 

간단하게 구현하겠습니다.
로그인 구현 때 사용한 JSP 파일을 그대로 사용할 겁니다.

 


1. 구현 절차

 

① AfterLogin.jsp 에 카카오 Javascript SDK 추가합니다.

<!-- 카카오 로그인 API -->
<script src="https://developers.kakao.com/sdk/js/kakao.js"></script>

 

② 간단하게 로그아웃 버튼을 만듭니다.

  • a 태그는 자바스크립트의 kakaoLogout() 함수로 이어지게 합니다.
<a href="javascript:kakaoLogout()">로그아웃</a>

 

③ 자바스크립트에 kakaoLogout() 함수를 작성합니다.

<script>
    function kakaoLogout() {
    	
        // Javascript SDK 초기화
    	Kakao.init("Javascript 키");
    	
        // 액세스 토큰이 없을 경우
        if (!Kakao.Auth.getAccessToken())
        {
        	location.href = "Login.jsp";
        }
        // 액세스 토큰이 있을 경우
        else
        {
        	// 액세스 토큰 초기화하는 함수
	        Kakao.Auth.logout(function() {
            		// 성공적으로 초기화되었는지 확인
	        	alert('액세스 토큰: ' + Kakao.Auth.getAccessToken())
                
	        	location.href = "Login.jsp";
	        });
        }
    }
</script>

 


2. 실행 예시

로그인 후 AfterLogin.jsp 페이지입니다.

 

'F12' > 상단 'Applications' > 왼쪽 'Storage' > 'Cookies' 를 확인해줍니다.
그냥 확인용입니다.

JSESSIONID와 함께 카카오 로그인 쿠키들이 생성되었습니다.

 

'F12'를 다시 누르고, 돌아온 AfterLogin.jsp 하단의 '로그아웃'을 눌러줍니다.

액세스 토큰이 잘 지워져 null 값으로 뜹니다.
'확인'을 눌러주면 Login.jsp 로 이어집니다.
이 페이지에서 다시 'F12'로 쿠키를 확인해줍니다.
쿠키가 그대로 남아있습니다.

당연합니다. Kakao.Auth.Logout()은 쿠키를 지우는 게 아니라 액세스 토큰을 지우는 것이기 때문입니다.

쿠키를 하나하나 우클릭 'Delete'로 지워주고 난 뒤에 '카카오 로그인' 버튼을 누르게 되면
아이디 비밀번호를 입력할 수 있는 로그인 창이 열리는 것을 알 수 있습니다.

참고로 자바에서 getCookie로 가져와서 지워주려고 시도해봤지만 카카오 쿠키는 가져와지지 않았습니다.
전체를 다 가져와도... 이름을 특정해도... 도메인을 특정해도...

쿠키를 지워주지 않고 '카카오 로그인' 버튼을 누르면 로그인 되어있는 계정으로 자동 로그인됩니다.

 


3. 전체 코드

 

AfterLogin.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>카카오 로그인 예제</title>
</head>

<!-- jQuery -->
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>

<!-- 카카오 로그인 API -->
<script src="https://developers.kakao.com/sdk/js/kakao.js"></script>

<body>

<h1>로그인 성공!</h1>
<hr><br>

로그인 아이디: ${param.kakao_id }

<br><br>

설정한 이름: ${param.kakao_nickname }

<br><br>

프로필 사진: ${param.kakao_image }
<br>
<img src=" ${param.kakao_image }">

<br><br>

액세스 토큰:  ${param.kakao_access_token }

<br><br><br>

<a href="javascript:kakaoLogout()">로그아웃</a>

<script>
    function kakaoLogout() {
    	
        // Javascript SDK 초기화
    	Kakao.init("Javascript 키");
    	
        // 액세스 토큰이 없을 경우
        if (!Kakao.Auth.getAccessToken())
        {
        	location.href = "Login.jsp";
        }
        // 액세스 토큰이 있을 경우
        else
        {
        	// 액세스 토큰 초기화하는 함수
	        Kakao.Auth.logout(function() {
            		// 성공적으로 초기화되었는지 확인
	        	alert('액세스 토큰: ' + Kakao.Auth.getAccessToken())
                
	        	location.href = "Login.jsp";
	        });
        }
    }
</script>

</body>
</html>

 


 

카카오 로그인 API로 로그인, 로그아웃 구현이 끝났습니다.

수고하셨습니다.

 

 

참고: 카카오 디벨로퍼스 카카오 로그인 Javascript Document - 로그아웃

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

'REST API' 카테고리의 다른 글

[Kakao] 카카오 로그인 API - 2. 로그인 구현  (0) 2021.07.16
[Kakao] 카카오 로그인 API - 1. 설정  (0) 2021.07.16
'REST API' 카테고리의 다른 글
  • [Kakao] 카카오 로그인 API - 2. 로그인 구현
  • [Kakao] 카카오 로그인 API - 1. 설정
NPC
NPC
예... 안녕하세요
  • NPC
    어떤 블로그의 겁나 옛날 글
    NPC
  • 전체
    오늘
    어제
    • 분류 전체보기 (20)
      • MEMO (3)
      • Programming (3)
        • JAVA (2)
        • PYTHON (1)
      • Coding Test (7)
        • Programmers (7)
      • REST API (3)
      • ERROR (4)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    자바달력예제
    AttributeError
    beautifulsoup4
    sqlexception
    카카오
    카카오로그인
    myBatis
    java
    restfulapi
    배터리수명
    Ngrok
    15Z970
    LG그램
    자바예제
    웹크롤링
    git명령어
    restapi
    Python
    프로그래머스
    illegalStateException
    카카오로그인API
    코딩테스트
    level1
    500에러
    카카오로그아웃
    sns로그인
    level2
    15z970-ga5bk
    별찍기
    BindingException
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
NPC
[Kakao] 카카오 로그인 API - 3. 로그아웃 구현
상단으로

티스토리툴바