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

2021. 7. 16. 12:57·REST API
목차
  1. 1. 구현 절차
  2. 2. 실행 예시
  3. 3. 전체 코드

 

목차
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
  1. 1. 구현 절차
  2. 2. 실행 예시
  3. 3. 전체 코드
'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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.