韩国 kakaotalk web网页版第三方登录示例
先跳转 授权
https://kauth.kakao.com/oauth/authorize?client_id=“+restApi+”&redirect_uri=“+redirect_uri+”&response_type=code
授权后会回调所重定向的 redirect_uri地址
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Kakao Login</title>
</head>
<body>
<!-- 引入SDK -->
<script src="./jquery-2.1.4.min.js"></script>
<script src="https://developers.kakao.com/sdk/js/kakao.min.js"></script>
<!-- 登录按钮容器 -->
<!--<a id="kakao-login-btn"></a>-->
<script>
var restApi = "ee874f84d51b33e99488721c4871ce16";
var javascriptApi = "1f7684b1037a7bd9fdaf5475e405fe02";
var redirect_uri="https://www.baidu.com/login/login.html";//获取Facebook用户信息后回调地址,客户服务器的链接(此处为示例)
// 初始化应用程序密钥
Kakao.init(javascriptApi);
// 检查是否初始化成功
console.log(Kakao.isInitialized())
// 创建登录按钮
var code = getUrlParam("code");
var error = getUrlParam("error");
if(code!=null&&code!=undefined&&code!=''){
$.ajax({
type: "POST",
url: "https://kauth.kakao.com/oauth/token?grant_type=authorization_code&client_id="+restApi+"&redirect_uri="+redirect_uri+"&code="+code,
data: {},
dataType: "json",
async:false,
success: function(e) {
var token = e.access_token;
Kakao.Auth.setAccessToken(token)
Kakao.API.request({
url: '/v2/user/me',
success: function (res) {
// alert(JSON.stringify(res));
const payload = res;
unlinkApp();
// 发送用户信息给UNIAPP
uni.postMessage({
data: {
payload: {
id: payload.id,
email: payload.kakao_account.email,
name: payload.properties.nickname
}
}
});
},
fail: function (error) {
// alert(
// 'login success, but failed to request user information: ' +
// JSON.stringify(error)
// )
console.log(error);
},
})
},
error:function(e){
console.log(e);
if(e.error_description=="Client ID mismatch"){
window.location.href="https://kauth.kakao.com/oauth/authorize?client_id="+restApi+"&redirect_uri="+redirect_uri+"&response_type=code";
}
}
})
}else if(error==="access_denied"){
window.location.href="https://kauth.kakao.com/oauth/authorize?client_id="+restApi+"&redirect_uri="+redirect_uri+"&response_type=code";
}
// 注销登录
function unlinkApp() {
Kakao.API.request({
url: '/v1/user/unlink',
success: function (res) {
// alert('success: ' + JSON.stringify(res))
console.log('已注销')
},
fail: function (err) {
// alert('fail: ' + JSON.stringify(err))
console.log('注销失败')
},
})
}
/*获取地址栏参数*/
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if (r != null) return unescape(r[2]);
return null; //返回参数值
}
</script>
</body>
</html>