스프링 - 페이스북 로그인 구현 (페이스북 아이디로 로그인)
Back-End/Spring 2019. 7. 30. 10:501. https://developers.facebook.com/ (페이스북 개발자센터 접속) 하고, 앱 만들기 선택
2. 앱을 등록했다면 Facebook 로그인 -> 시작하기 버튼 선택, 플랫폼을 웹으로 선택
============================== 코드 부분=========================================
1. 로그인 페이지 (login.jsp) 로그인 버튼을 구현할 부분
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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | <!-- 페이스북 아이디를 연동해서 로그인 --> <center> <button type="button" id="loginBtn"><img src="file:///C:/Users/user/git/hs_project/hansub_project/src/main/webapp/WEB-INF/views/images/facelogin.jpg" />페이스북으로 로그인</button> </center> <div id="access_token"></div> <div id="user_id"></div> <div id="name"></div> <div id="email"></div> <div id="gender"></div> <div id="birthday"></div> <div id="id"></div> <script> function getUserData() { /* FB.api('/me', function(response) { document.getElementById('response').innerHTML = 'Hello ' + response.name; console.log(response); }); */ FB.api('/me', {fields: 'name,email'}, function(response) { var facebookname = response.name; window.location.replace("http://" + window.location.hostname + ( (location.port==""||location.port==undefined)?"":":" + location.port) + "/hansub_project/home?facebookname="+facebookname); }); } window.fbAsyncInit = function() { //SDK loaded, initialize it FB.init({ appId : '488986078336253', //페이스북 개발자 홈페이지에서 앱 id를 확인해서 복사, 붙여넣기 해야한다. cookie : true, // enable cookies to allow the server to access // the session xfbml : true, // parse social plugins on this page version : 'v3.3' // use graph api version 2.8 //페이스북 개발자 홈페이지에서 버전을 확인해서 작성해야 한다. }); //check user session and refresh it FB.getLoginStatus(function(response) { if (response.status === 'connected') { //user is authorized //document.getElementById('loginBtn').style.display = 'none'; getUserData(); } else { //user is not authorized } }); }; //load the JavaScript SDK (function(d, s, id){ var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "//connect.facebook.com/ko_KR/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); //add event listener to login button, //버튼을 클릭하면 실행되는 함수 document.getElementById('loginBtn').addEventListener('click', function() { //do the login FB.login(function(response) { if (response.authResponse) { access_token = response.authResponse.accessToken; //get access token user_id = response.authResponse.userID; //get FB UID console.log('access_token = '+access_token); console.log('user_id = '+user_id); //user just authorized your app //document.getElementById('loginBtn').style.display = 'none'; getUserData(); } }, {scope: 'email,public_profile,user_birthday', return_scopes: true}); }, false); </script> | cs |
2. 메인 페이지 (home.jsp) 페이스북으로 로그인을 하면 사용자의 "이름" 을 받아서 세션에 담아 출력하는 부분
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 | <!-- url 파라미터로 받은 로그인한 아이디 값이 있을시에는 "name+방문을 환영한다"고 출력이 되고, null값일 때에는 "guest님 방문을 환영합니다" 메시지가 출력되도록 한다.--> <% String navername = request.getParameter("navername"); String kakaonickname = request.getParameter("kakaonickname"); String facebookname = request.getParameter("facebookname"); //url로 넘긴 name를 파라미터로 받는다. session.setAttribute("navername", navername); session.setAttribute("kakaonickname", kakaonickname); session.setAttribute("facebookname", facebookname); //그리고 그 값을 세션에 저장한다. if (navername == null && kakaonickname == null && facebookname == null) { %> guest님 방문을 환영합니다. <%@ include file="member/login.jsp"%> <% } else if (navername != null){ %> <%=" (네이버) "+session.getAttribute("navername")%>님 방문을 환영합니다. <form action ="naver_logout.do" method = "post"> <button type = "submit" name = "submit" >로그아웃</button> </form> <% } else if (kakaonickname != null){ %> <%=" (카카오톡) "+session.getAttribute("kakaonickname")%>님 방문을 환영합니다. <form action = "kakao_logout.do" method = "post"> <button type = "submit" name = "submit">로그아웃</button></form> <% } else if (facebookname != null){ //name값이 null값이 아닐때 실행되는 부분. %> <%=" (페이스북) "+session.getAttribute("facebookname")%>님 방문을 환영합니다. <form action = "facebook_logout.do" method = "post"> <button type = "submit" name = "submit">로그아웃</button></form> <% }; %> | cs |
3. 컨트롤러 (MemberController.java) 로그아웃시 맵핑되는 부분
1 2 3 4 5 6 7 8 9 | //페이스북 관련 로그아웃 메소드 @RequestMapping("facebook_logout.do") public String facebook_logout(HttpSession session, HttpServletRequest request) { //세션에 담긴값 초기화 session.invalidate(); return "home"; } | cs |
출처
'Back-End > Spring' 카테고리의 다른 글
Spring 에서 Bean 등록 방법 (0) | 2019.08.05 |
---|---|
스프링 - 핸드폰 문자 보내기 구현해보기 (1) | 2019.07.31 |
스프링 - 카카오톡 로그인 구현 (카카오톡 아이디로 로그인) (0) | 2019.07.29 |
스프링 - 구글 로그인 구현 (구글 아이디로 로그인) (0) | 2019.07.26 |
스프링 - 네이버 로그인 구현 (네이버 아이디로 로그인) (0) | 2019.07.25 |