21.04.29 JSPCommunity 프로젝트(카카오 로그인 기능 추가)
2021. 4. 29. 22:36ㆍJAVA/JSP Community 사이트 프로젝트
## UserMemberController.java
// 카카오 로그인
public String doKakaoLogin(HttpServletRequest request, HttpServletResponse response) {
// 1.인증코드 받기
String code = request.getParameter("code");
// 2.인증된 코드로 사용자토큰 받기
Map<String, Object> tokensInfo = kakaoService.getAccessToken(code);
String access_Token = (String) tokensInfo.get("access_Token");
// 3.사용자토큰으로 로그인한 유저의 정보 받아오기
HashMap<String, Object> userInfo = kakaoService.getUserInfo(access_Token);
String loginProviderTypeCode = "kakaoRest";
String onLoginProviderMemberId = (String) userInfo.get("kakaoId");
// DB에서 카카오 로그인한 회원의 정보 가져오기(조회하기)
Member member = memberService.getMemberByOnLoginProviderMemberId(loginProviderTypeCode,
onLoginProviderMemberId);
Map<String, Object> kakaoUser = new HashMap<>();
kakaoUser.put("nickname", userInfo.get("nickname"));
if (!userInfo.get("email").equals("이메일 동의 항목에 사용자 동의 필요")) {
kakaoUser.put("email", userInfo.get("email"));
}
kakaoUser.put("loginProviderTypeCode", loginProviderTypeCode);
kakaoUser.put("onLoginProviderMemberId", onLoginProviderMemberId);
int memberId = 0;
// 만약, 기존 회원정보 있으면
if (member != null) {
// 카카오 유저정보로 기존 회원정보 업데이트
memberId = member.getId();
kakaoUser.put("id", memberId);
kakaoUser.put("nickname", member.getNickname());
memberService.modify(kakaoUser);
} else {
// 만약, 기존 회원정보 없으면 카카오계정으로 회원가입 실시
memberId = memberService.joinByKakao(kakaoUser);
}
HttpSession session = request.getSession();
session.setAttribute("loginedMemberId", memberId);
// 로그인 알림창 보여주고 화면으로 이동
String replaceUrl = "../home/main";
if (Util.isEmpty(request.getParameter("nextUrlAfterLogin")) == false) {
replaceUrl = request.getParameter("nextUrlAfterLogin");
}
if (Util.isEmpty(request.getParameter("beforeUrl")) == false) {
replaceUrl = request.getParameter("beforeUrl");
}
String nickname = (String) userInfo.get("nickname");
if(member != null) {
nickname = member.getNickname();
}
return msgAndReplaceUrl(request, nickname + ", 님 반갑습니다.", replaceUrl);
}
'JAVA > JSP Community 사이트 프로젝트' 카테고리의 다른 글
21.02.19~20 JSPCommunity 프로젝트(홈 페이지스크롤 효과 추가, 댓글 ajax 보류, 대댓글 추가, 임시비밀번호 발급 오류 수정) (0) | 2021.02.20 |
---|---|
21.02.18 JSPCommunity 프로젝트(댓글 등록 ajax화, 댓글 리스트 ajax로 불러오기 성공, 페이징 시도중) (0) | 2021.02.18 |
21.02.16~17 JSPCommunity 프로젝트(search페이지 추가, 모바일 버전 디자인 개선, 각종 버그 수정) (0) | 2021.02.17 |
21.02.15 JSPCommunity 프로젝트(전체 디자인 개선) (0) | 2021.02.15 |
21.02.10~11 JSPCommunity 프로젝트(조회수 기능 개선(feat.localStorage)) (0) | 2021.02.11 |