Back-End/REST API

[API] 네이버,카카오,구글 API 사용하여 SNS 로그인 추가하기

HMHA 2023. 2. 6. 10:53
300x250
반응형

안녕하세요.

자바스크립트(JSP)로 네이버 로그인 / 카카오 로그인 / 구글 로그인 세가지를

모두 등록하는 방법에 대한 포스팅을 작성해 볼까 합니다.

 

사용 API 목록

1. 구글(Google) API 

2. 네이버(Naver) API

3. 카카오(Kakao) API

 

API 사이트

1. 구글(Google) API : https://console.developers.google.com/

2. 네이버(Naver) API : https://developers.naver.com/main/

3. 카카오(Kakao) API : https://developers.kakao.com/

 

API 사이트에서 등록하는 방법은 따로 다루지 않겠습니다.

등록을 다 하셨다면

 

<head></head> 코드

 


	<meta name="google-signin-scope" content="profile email">
    <meta name="google-signin-client_id" content="My API KeyNumber.apps.googleusercontent.com">
	<!-- KaKao Login Js -->
	<script type="text/javascript" src="/자신의경로/자신의경로/kakao.js"></script>
	<!-- Google Login Js -->
	<script src="https://apis.google.com/js/platform.js?onload=onLoad" async defer></script>
	<script src="https://apis.google.com/js/platform.js?onload=triggerGoogleLoaded"></script>
	<script src="https://apis.google.com/js/platform.js?onload=init" async defer></script>
	<script src="/자신의경로/자신의경로/platform.js" async defer></script>
	<!-- Naver Login Js -->
	<script type="text/javascript" src="https://static.nid.naver.com/js/naveridlogin_js_sdk_2.0.0.js" charset="utf-8"></script>

 

Kakao.js 와 platform.js는 다운받아서 프로젝트 경로안에 넣어서 사용하였습니다.

<body></body> 코드

 

<a href="#" id="login">
	Login
</a>
                    <hr>
                    <!--  Google Login Btn -->
	             	<div class="g-signin2" style="max-width:400px;max-height:60px" data-onsuccess="onSignIn" data-theme="dark" data-width="auto" data-height="60"></div>
	                <!--  Naver Login Btn -->
	                <div id="naverIdLogin" >
	                  	<a id="naverIdLogin_loginButton">
	                  		<img src="https://static.nid.naver.com/oauth/big_g.PNG?version=js-2.0.0" width="100%" height="auto" style="max-width:400px;max-height:60px"/>
	                  	</a>
	                </div>
	                <!--  KaKao Login Btn -->
	                <a id="login-form-btn" href="javascript:loginFormWithKakao()">
						  <img src="//k.kakaocdn.net/14/dn/btqCn0WEmI3/nijroPfbpCa4at5EIsjyf0/o.jpg" width="100%" height="auto" style="max-width:400px;max-height:60px"/>
					</a>

<script></script> 코드

<script type="text/javascript">
 var naverLogin = new naver.LoginWithNaverId({
		clientId: "clientId",
		callbackUrl: "callbackUrl",
		isPopup: false,
		/* callback 페이지가 분리되었을 경우에 callback 페이지에서는 callback처리를 해줄수 있도록 설정합니다. */
	});
	/* (3) 네아로 로그인 정보를 초기화하기 위하여 init을 호출 */
	naverLogin.init();

	/* (4) Callback의 처리. 정상적으로 Callback 처리가 완료될 경우 main page로 redirect(또는 Popup close) */
	window.addEventListener('load', function () {
		naverLogin.getLoginStatus(function (status) {
			if (status) {
				/* (5) 필수적으로 받아야하는 프로필 정보가 있다면 callback처리 시점에 체크 */
				console.log(naverLogin.accessToken.accessToken)
				var email = naverLogin.user.getEmail();
				var profileImage = naverLogin.user.getProfileImage();
				var name = naverLogin.user.getName();
				var uniqId = naverLogin.user.getId();
				if( email == undefined || email == null) {
					alert("이메일은 필수정보입니다. 정보제공을 동의해주세요.");
					/* (5-1) 사용자 정보 재동의를 위하여 다시 네아로 동의페이지로 이동함 */
					naverLogin.reprompt();
					return;
				}else if( name == undefined || name == null){
					alert("회원이름은 필수정보입니다. 정보제공을 동의해주세요.");
					naverLogin.reprompt();
					return;
				}else{
                	// 성공
				}
			} else {
				console.log("callback 처리에 실패하였습니다.");
			}
	});
});
Kakao.init('Kakao API Key'); 
function loginFormWithKakao() {
    Kakao.Auth.loginForm({
		success: function(authObj) {
			Kakao.API.request({
         	    url: '/v2/user/me',
	  			success: function(res) {
	  				console.log(res.kakao_account['email'])
	  				console.log(res.id)
	  			}
	  		})
	  	},
		fail: function(err) {
		  alert(JSON.stringify(err))
		},
	})
}
$(document).ready(function(){
	
})
$(function(){
	$('#login').on("click",function(){
		js_login();
	})
	$('#naverIdLogin_loginButton').on("click",function(){
		var email = $('#naver_email').val();
		var password = $('#naver_password').val();
		$('.email').val(email);
		$('.password').val(password);
	});
});
function googleSign(){
	
}
function onSignIn(googleUser) {
    var profile = googleUser.getBasicProfile();
//     console.log("ID: " + profile.getId());
//     console.log('Full Name: ' + profile.getName());
//     console.log('Given Name: ' + profile.getGivenName());
//     console.log('Family Name: ' + profile.getFamilyName());
//     console.log("Image URL: " + profile.getImageUrl());
//     console.log("Email: " + profile.getEmail());
}

정말 간단하게 카카오 API / 네이버 API / 구글 API 를 사용해서

구글 로그인 / 네이버 로그인 / 카카오 로그인 등 SNS 로그인 기능을 구현할 수 있습니다.

끝!

 

 

출처 : https://shihis123.tistory.com/entry/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8JSP-%EB%84%A4%EC%9D%B4%EB%B2%84%EC%B9%B4%EC%B9%B4%EC%98%A4%EA%B5%AC%EA%B8%80-API-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-SNS-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%B6%94%EA%B0%80%ED%95%98%EA%B8%B0

300x250
반응형