inuit57 / WebApp

게시판 CRUD
0 stars 0 forks source link

카카오 로그인 #26

Closed inuit57 closed 3 years ago

inuit57 commented 3 years ago
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<script src="https://developers.kakao.com/sdk/js/kakao.js"></script>

<ul>
    <li onclick="kakaoLogin();">
      <a href="javascript:void(0)">
          <span>카카오 로그인</span>
      </a>
    </li>
    <li onclick="kakaoLogout();">
      <a href="javascript:void(0)">
          <span>카카오 로그아웃</span>
      </a>
    </li>
    <li onclick="dataCheck();">
    <a href="javascript:void(0)">
          <span>데이터 체크</span>
      </a>
    </li>
</ul>
<!-- 카카오 스크립트 -->
<script src="https://developers.kakao.com/sdk/js/kakao.js"></script>
<script>
Kakao.init('37f8964af0801ae7c162647308ed7997'); //발급받은 키 중 javascript키를 사용해준다.
console.log(Kakao.isInitialized()); // sdk초기화여부판단
//카카오로그인

var test  
var name 
function kakaoLogin() {
    Kakao.Auth.login({
      success: function (response) {
        Kakao.API.request({
          url: '/v2/user/me',
          data: {
              property_keys: ["properties.nickname", "kakao_account.email","kakao_account.gender"]
          }, // 여기에 넣은 것만 가져올 수도 있구나. 아하. 
          success: function (response) {
              console.log(response)

              console.log(response.properties.nickname)
              console.log(response.kakao_account.email)
              //이거를 이제 저장해서 처리하면 되겠다. 

              //console.log(JSON.stringify(response.kakao_account.email))
        /*    console.log("프로퍼티")
              console.log(response.properties.nickname)

              name = JSON.stringify(response.properties.nickname)
              test = JSON.stringify(response.kakao_account.email) 
                */
              // 이렇게 하면 일단 eamil 정보 저장 가능하다. 
              // 이메일 받아와서 회원정보에 동일한 email이 있을 경우 
              // 로그인 처리를 수행해주도록 하자. 

              /* console.log("테스트")
              console.log(test)
              console.log(name) */
              // 이름, 이메일 받아와서 처리 가능. 
          },
          fail: function (error) {
            console.log(error)
          },
        })
      },
      fail: function (error) {
        console.log(error)
      },
    })
  }

function dataCheck(){

    alert(property_keys)

}
//카카오로그아웃  
function kakaoLogout() {
    if (Kakao.Auth.getAccessToken()) {
      Kakao.API.request({
        url: '/v1/user/unlink',
        success: function (response) {
            console.log(response)
        },
        fail: function (error) {
          console.log(error)
        },
      })
      Kakao.Auth.setAccessToken(undefined)
    }
  }  
</script>
</body>
</html>

이거 참고해서 작업할 것. 이름이랑 이메일 2개를 받아서 DB조회하고 일치하는 회원이 있다면 로그인 처리 진행.

없다면... 고민을 좀 해보도록 하자. 가입을 유도하거나. 연동된 계정 정보가 없습니다. 라는 식으로??

inuit57 commented 3 years ago

로그인을 진행한뒤 로그아웃을 했을 때 바로 href로 리다이렉트 시켜버리면 다시 로그인할 때 확인하는 창이 나오지 않고 곧바로 로그인이 되는 문제가 존재한다.

inuit57 commented 3 years ago

loginForm을 쓰니까 자동 로그인이 안된다. 후 왜 자동으로 로그인 처리가 된 건지는 좀더 공부하거나 해야겠다.

바로 안 넘기고 아래에 버튼 눌렀을 때 넘기면 또 제대로 로그아웃 처리가 된다는게...허허