jQuery 와 Ajax 를 이용해 카카오로그인을 구현했다.
각 sns로그인 구분을 위해 카카오서버에서 받아온 id값 뒤에는 "@k" 를 붙였고,
id값이 회원DB에 존재하지 않는 경우 바로 회원가입하고 로그인하여 index.jsp 로 이동되게끔 처리했다.
loginView.jsp - javaScript 부분
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
//카카오 로그인
Kakao.init('javascript APP KEY');
$("#kakao-login-btn").on("click", function(){
//1. 로그인 시도
Kakao.Auth.login({
success: function(authObj) {
//console.log(JSON.stringify(authObj));
//console.log(Kakao.Auth.getAccessToken());
//2. 로그인 성공시, API를 호출합니다.
Kakao.API.request({
url: '/v1/user/me',
success: function(res) {
//console.log(JSON.stringify(res));
res.id += "@k";
$.ajax({
url : "/user/json/checkDuplication/"+res.id,
headers : {
"Accept" : "application/json",
"Content-Type" : "application/json"
},
success : function(idChk){
if(idChk==true){ //DB에 아이디가 없을 경우 => 회원가입
console.log("회원가입중...");
$.ajax({
url : "/user/json/addUser",
method : "POST",
headers : {
"Accept" : "application/json",
"Content-Type" : "application/json"
},
data : JSON.stringify({
userId : res.id,
userName : res.properties.nickname,
password : "kakao123",
}),
success : function(JSONData){
alert("회원가입이 정상적으로 되었습니다.");
$("form").attr("method","POST").attr("action","/user/snsLogin/"+res.id).attr("target","_parent").submit();
}
})
}
if(idChk==false){ //DB에 아이디가 존재할 경우 => 로그인
console.log("로그인중...");
$("form").attr("method","POST").attr("action","/user/snsLogin/"+res.id).attr("target","_parent").submit();
}
}
})
},
fail: function(error) {
alert(JSON.stringify(error));
}
});
},
fail: function(err) {
alert(JSON.stringify(err));
}
});
})//e.o.kakao
|
cs |
loginView.jsp - HTML 부분
1
2
3
4
5
6
7
|
<!-- 카카오 로그인 추가 -->
<div id="kakaoLogin" align="center">
<a id="kakao-login-btn">
<img src="//k.kakaocdn.net/14/dn/btqbjxsO6vP/KPiGpdnsubSq3a0PHEGUK1/o.jpg" width="80%"/>
</a>
<a href="http://developers.kakao.com/logout"></a>
</div>
|
cs |
userController.java
1
2
3
4
5
6
7
8
9
10
|
@RequestMapping(value="snsLogin/{userId}", method=RequestMethod.POST)
public String snsLogin( @PathVariable String userId, HttpSession session ) throws Exception{
System.out.println("/user/snsLogin : POST");
User dbUser = userService.getUser(userId);
session.setAttribute("user", dbUser);
return "redirect:/index.jsp";
}
|
cs |
반응형
'Backend > JAVA' 카테고리의 다른 글
클라이언트와 서버 구축하기 (기본) (0) | 2018.06.05 |
---|---|
페이스북 로그인 API 적용 (0) | 2018.05.25 |
인스타그램 API 적용하여 게시물 가져오기 (0) | 2018.05.25 |
네이버 로그인 API 적용 (4) | 2018.05.25 |
구글 로그인 API 적용 (0) | 2018.05.24 |
댓글