본문 바로가기
FRONT/javascript

[카카오API] 카카오 로그인, 로그아웃, 연결끊기 (JDK, javascript 방법)

by 성젼이 2021. 7. 1.

 

 

로그인

/**
 * 카카오톡 로그인
 * response 값으로 유저의 snsKey, snsType는 필수로 form안에 append 처리합니다.
*/
function kakaoLogin(params) {
  Kakao.init(params.key);
  Kakao.isInitialized();

  $(params.button).on('click', function() {
    loginWithKakao();
  });

  function loginWithKakao() {
    Kakao.Auth.login({
      success : function(response) {
        Kakao.API.request({
          url:'/v2/user/me',
          success: function(result) {
            var accessToken = Kakao.Auth.getAccessToken(); // 액세스 토큰 할당
            Kakao.Auth.setAccessToken(accessToken); // 액세스 토큰 사용하게 등록

            // 필수 snsType, snsKey 
            params.form.append([
              $('<input />', {'type' : 'hidden', 'name' : 'snsKey' , 'value' : result.id}),
              $('<input />', {'type' : 'hidden', 'name' : 'snsType' , 'value' : 'kakaotalk'}),
              $('<input />', {'type' : 'hidden', 'name' : 'accessToken' , 'value' : accessToken})
            ]);

              // 추가 요청 값
              var dataArray = new Array();
              if (result.kakao_account) {
                $.each(result.kakao_account, function(key, val) {
                  if (typeof val == 'object') {
                    $.each(val, function(smallKey, smallVal) {
                      dataArray[smallKey] = smallVal;
                    });
                  } else {
                    dataArray[key] = val;
                  }
                });
              }

              $.each(params.request, function(key, val) {
                params.form.append($('<input />', {'type' : 'hidden', 'name' : val , 'value' : dataArray[val]}));
              });

              params.form.submit();
            },
            fail : function(error) {
              console.log('카카오톡과 연결이 완료되지 않았습니다. \n다시 시도해주시기 바랍니다.');
            }
          })
        },
        fail : function(error) {
          console.log('카카오톡과 연결 실패하였습니다. \n다시 시도해주시기 바랍니다.');
        },
      })  
    }
  };

 

 

로그아웃

  /**
* 카카오톡 로그아웃
**/
function kakaoLogout(kakaoKey) {
    Kakao.init(kakaoKey); // 초기화
    Kakao.isInitialized();

    if (!Kakao.Auth.getAccessToken()) { // 토큰이 있는지 확인 (토큰 가져와보기)
      console.log('Not logged in.');
      return;
    }

    Kakao.Auth.logout(function() { // 카카오 로그아웃
      console.log(Kakao.Auth.getAccessToken());
    });
  };

중요한 것은, Kakao jdk를 초기화 시켜주는 것이고.

후에 쓰일 것을 생각해서 최대한 게으르게 모듈화를 해서 만들었다.

카카오 비지니스 앱 등록만으로 쓰일 수 있게 해놨는데, 싱크는 달라지나.. 모르겠다. 추후에 업데이트해야지.

/action값 지정과 , /action 경로(컨트롤러)에서 회원 가입&로그인 처리 등을 을 한다.

 

 

연결끊기 (탈퇴)

Kakao.init(카카오앱키);
Kakao.isInitialized();
Kakao.Auth.setAccessToken(사용자액세스 키);

Kakao.API.request({
  url: '/v1/user/unlink',
  success: function(response) {
   console.log(response);
   callbackFunction(); // 연결끊기(탈퇴)성공시 서버에서 처리할 함수
  },
  fail: function(error) {
   alert('탈퇴처리가 미완료되었습니다. \n관리자에게 문의하시기 바랍니다.');
   console.log(error);
 }
});

 

 

 

 

*댓글과 좋아요는 힘이 됩니다.