Kakao JavaScript SDK를 이용한 Redirect방식 로그인은 Kakao인증 후, CallBack Url이 호출됩니다. 즉, CallBack Url이 호출된 이후에는 REST API 방식 사용
Kakao.init('{JAVASCRIPT_KEY}'); //★ 수정 할 것 : SDK를 초기화 합니다. 사용할 앱의 JavaScript 키를 설정해 주세요.
console.log(Kakao.isInitialized()); // SDK 초기화 여부를 판단합니다.
function loginWithKakao() {
Kakao.Auth.authorize({
redirectUri: encodeURI('http://localhost/callBackForKakao.php') //★ 수정 할 것
})
}
Kakao JavaScript SDK를 이용한 PopUp방식 로그인은 Kakao인증 후, CallBack Url 호출하지 않습니다. 즉, Kakao인증 이후에는 로그인 후 처리 및 액세스 토큰 저장을 Script에서 해야합니다.
Kakao.init('{JAVASCRIPT_KEY}'); //★ 수정 할 것 : SDK를 초기화 합니다. 사용할 앱의 JavaScript 키를 설정해 주세요.
console.log(Kakao.isInitialized()); // SDK 초기화 여부를 판단합니다.
function loginWithKakaoPopUp() {
Kakao.Auth.login({
success: function(authObj) {
alert(JSON.stringify(authObj));
Kakao.Auth.setAccessToken(authObj.access_token);
//★ 추가 할 것 : 로그인 성공 후 처리
},
fail: function(err) {
alert(JSON.stringify(err))
},
})
}
JavaScript SDK로 로그인(PopUp)한 경우만 사용, Redirect로그인 or REST API 로그인은 이후 로직 REST API로 로그아웃 구현 해야함.
JavaScript SDK를 사용하고자 한다면, Kakao.Auth.setAccessToken(authObj.access_token); 설정 후 사용
function logoutWithKakao() {
if (!Kakao.Auth.getAccessToken()) {
console.log('Not logged in.');
alert("Not logged in.");
return;
}
console.log(Kakao.Auth.getAccessToken()); //before Logout
Kakao.Auth.logout(function() {
console.log(Kakao.Auth.getAccessToken()); //after Logout
alert("LogOut Success");
//★ 추가 할 것 : 로그아웃 성공 후 처리
});
}
JavaScript SDK로 로그인(PopUp)한 경우만 사용, Redirect로그인 or REST API 로그인은 이후 로직 REST API로 로그아웃 구현 해야함.
JavaScript SDK를 사용하고자 한다면, Kakao.Auth.setAccessToken(authObj.access_token); 설정 후 사용
function unlinkWithKakao() {
Kakao.API.request({
url: '/v1/user/unlink',
success: function(response) {
console.log(response);
},
fail: function(error) {
console.log(error);
}
});
}
JavaScript SDK로 로그인(PopUp)한 경우만 사용, Redirect로그인 or REST API 로그인은 이후 로직 REST API로 로그아웃 구현 해야함.
JavaScript SDK를 사용하고자 한다면, Kakao.Auth.setAccessToken(authObj.access_token); 설정 후 사용
function profileWithKakao() {
Kakao.API.request({
url: '/v2/user/me',
success: function(response) {
console.log(response);
document.getElementById("userid").innerText = response.id;
document.getElementById("nickname").innerText = response.kakao_account.profile.nickname;
document.getElementById("profile_image").src = response.properties.profile_image;
document.getElementById("thumbnail_image").src = response.properties.thumbnail_image;
},
fail: function(error) {
console.log(error);
}
});
}
/oauth/authorize 요청은 Url만 호출 하므로 언어에 상관 없이 처리 가능합니다. 다만, CallBack Url설정 시, 인코딩을 해야합니다.
//state는 Cross-Site Request Forgery(CSRF) 공격으로부터 보호하기 위해 난수 설정 후, 콜백 페이지에서 검증할 수 있는 기능이나
//로그인 후, 원래 페이지로 돌아가기 위한 파라메터로 사용하기도 함.
$state = urlencode("http://" . $_SERVER['HTTP_HOST'] . "/returnPage.php?test=한글&p=인코딩");
$client_id = $REST_API_KEY; //★ 수정 할 것
$redirect_uri = urlencode("http://" . $_SERVER['HTTP_HOST'] . "/callBackForKakao.php"); //★ 수정 할 것
$kakaoLoginUrl = "https://kauth.kakao.com/oauth/authorize?client_id=" . $client_id . "&redirect_uri=" . $redirect_uri . "&response_type=code&state=" . $state;
LogOut
https://pf-link.kakao.com/qr/_hyMVC/pages/_aI?q?query=state%3Dstore%253D1