본문 바로가기

개발

[SNS 로그인] 네이버 로그인 API

728x90

네이버 개발자 센터 ( https://developers.naver.com/main/ )

 

NAVER Developers

네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음��

developers.naver.com

 

개발 가이드 ( https://developers.naver.com/docs/login/api/ )

 

네이버아이디로로그인 개발가이드

NAVER Developers - 네이버아이디로로그인 개발가이드

developers.naver.com

 

 

login.jsp

<div id="naver_id_login"></div>

 

naver.js

※ naverSNSLogin,jsp 에서 정보 가져와서 addUser 함수에서 회원가입(opener사용)

var naver_id_login = new naver_id_login("Client ID넣기", "http://www.co.kr/naverSNSLogin");
var state = naver_id_login.getUniqState();
naver_id_login.setDomain("http://www.co.kr");
naver_id_login.setState(state);
naver_id_login.setPopup();
naver_id_login.init_naver_id_login();


function addUser(snsId, snsEmail, snsName, snsCd){
	$.ajax({
		type: "POST",
		url : "/user/addUser",
		async: false,
		data: '{"snsID" : "'+ snsId +'", "snsEmail" : "'+ snsEmail +'", "snsNickName" : "'+ snsName +'", "snsSignType" : "'+ snsCd +'"}',
		contentType: "application/json; charset=utf-8",
		success : function(result){
			if(result.msg == "SUCCESS") {
				swal2CustomAlert('success','회원가입에 성공했습니다.');
				$('.signUpModal').magnificPopup('close');
				dim.hide();
			} else if (result.msg == "ISDUPLICATE") {
				swal2CustomAlert('error','이미 존재하는 아이디입니다.');
			} else {
				swal2CustomAlert('error','ERROR');
			}
			console.log(result);
		}
	});
}

 

naverSNSLogin.jsp

 opener 사용해서 상위페이지에서 처리

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<!-- naver sns login -->
<script type="text/javascript" src="https://static.nid.naver.com/js/naverLogin_implicit-1.0.3.js" charset="utf-8"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<!-- naver sns login -->


<script type="text/javaScript">

	var naver_id_login = new naver_id_login("Client ID넣기", "http://xxx.co.kr/naverSNSLogin");
	naver_id_login.get_naver_userprofile("naverLoginCallback()");

	function naverLoginCallback() {

		if(naver_id_login.getProfileData('id')){
			var snsId = naver_id_login.getProfileData('id');
			var snsEmail = naver_id_login.getProfileData('email');
			var snsName = snsEmail.substring(0, snsEmail.indexOf("@"));
			var snsCd = "N";
			
			console.log(snsId);
			console.log(snsEmail);
			console.log(snsName);
			
            //상위 페이지에서 처리
			opener.addUser(snsId, snsEmail, snsName, snsCd);
			
			window.close();
		}else{
		alert("ERROR");
		window.close();
		}
	}

</script>

 

Controller.java

@RequestMapping("/naverSNSLogin")
	public String naverSNSLogin(HttpServletRequest req,HttpServletResponse res, @CookieValue(value = "lang", defaultValue = "") String lang) {

		lang = getLanguage(req, lang);
		req.setAttribute("lang", lang);

		return "user/naverSNSLogin";
	}

 

 

 

 

 

 

728x90
반응형