해당 프로젝트는 2023/01/25 ~ 2023/03/12 내에 진행되는
아카데미 내 수강생들끼리 팀을 나누어 진행한 모의 프로젝트입니다.
팀원은 5명이었으며, 프로젝트 리더를 맡았습니다.
이전 글 목록
1) 주어진 RFP를 바탕으로 주제 선정 - Spring Project(OTT 서비스)
2) ERD 설계 - Spring Project(OTT 서비스)
3) 회원 가입 기능 구현 - Spring Project (OTT 서비스)
4) 로그인, 로그아웃 기능 구현 - Spring Project (OTT 서비스)
5) 상세 페이지 및 회원 정보 수정 - Spring Project (OTT 서비스)
6) CRUD를 한번에 → 게시판 만들기(QNA게시판) - Spring Project(Mybatis) (OTT 서비스)
7) 게시판 페이징 처리 - Spring Project (OTT 서비스)
8) 카카오 지도 API 사용하기 - Spring Project (OTT 서비스)
네이버 로그인 API 이용하기
https://developers.naver.com/products/login/api/api.md
네이버에서 API 이용 신청을 통한 애플리케이션 등록을 해야 한다.
사용할 URL과 콜백 시 사용될 URL을 설정하자.
https://developers.naver.com/docs/login/web/web.md
네이버에서 로그인 API의 자세한 사용법에 대한 문서도 제공된다.
사용하기
naverlogin.js
var naverLogin = new naver.LoginWithNaverId({
clientId: "XMsvnx3R1_T_0aXB93xf",
callbackUrl: "http://localhost:8080/user/naverLogin",
isPopup: false, /* 팝업을 통한 연동처리 여부 */
loginButton: {color: "green", type: 1, height: 20}
});
naverLogin.init();/* 설정정보를 초기화하고 연동을 준비 */
navercallback.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script type="text/javascript" src="https://static.nid.naver.com/js/naveridlogin_js_sdk_2.0.0.js" charset="utf-8"></script>
<script>
/* 02.10최종완료 - */
/* 네이버 아이콘 클릭 시 콜백되는 화면, 해당 화면에서 ApiLoginController의 Naver메서드들과 데이터를 주고받으며 가입처리 및 로그인 처리 */
const naverLogin = new naver.LoginWithNaverId({
clientId: "내 클라이언트ID",
callbackUrl: "설정했던 콜백URL",
isPopup: false, /* 팝업을 통한 연동처리 여부 */
callbackHandle: true
});
naverLogin.init();/* 설정정보를 초기화하고 연동을 준비 */
window.addEventListener('load', function () {
naverLogin.getLoginStatus(function(status) {
if (status) {
const email = naverLogin.user.getEmail();
const nickName = naverLogin.user.getNickName();
const id = naverLogin.user.getId();
console.log(naverLogin);
$.ajax({
type : 'post',
url : 'naverSaved',
data : {"email" : email, "nickname" : nickName, "id" : id},
dataType : 'text',
success: function(result) {
/* success 1 : 가입해야 할 경우 */
if(result=='ok') {
/* success 1-1 : 닉네임 입력받아 가입시키기 */
/* 닉네임 입력 시 가입, 미입력 시 주소 리턴 */
var newNickname = prompt('사용하실 닉네임을 입력해주세요');
if(newNickname != null){ /* 입력 시 데이터 전송으로 자동로그인 처리 및 메인 페이지 이동 */
$.ajax({
type : 'post',
url : 'naverSignin',
data : {"email" : email, "nickname" : newNickname, "id" : id}
});
alert(newNickname + "님 환영합니다");
location.href = "/video/list";
}
else { /* 가입 거절 시 로그인화면 리턴 */
location.href = "/user/signin"
}
/* success 2 : 기가입 */
} else if(result != null) {
alert(result + "님 반갑습니다.")
location.href = "/video/list"
}
},
error: function(result) {
console.log('오류 발생')
}
})
} else alert("콜백 실패");
});
});
</script>
</body>
</html>
네이버 로그인을 사용하기 위해 네이버에서 제공되는 스크립트를 받아왔다.
<script type="text/javascript" src="https://static.nid.naver.com/js/naveridlogin_js_sdk_2.0.0.js" charset="utf-8"></script>
제작중인 프로젝트의 USER TABLE에 네이버 로그인 시 받아오는 정보를 가지고 회원가입 여부를 체크한 뒤
1. 비회원이면 간단히 닉네임 입력 후 DB에 정보 저장
2. 회원이라면 "닉네임"님 환영합니다. 문구를 출력 후 메인 페이지로 넘어가게 처리했다.
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!