[JSP, JavaScript] 네이버 로그인 API

2024. 8. 30. 17:30·웹

현재 국비에서 팀 프로젝트를 진행중에 있다.

M/V/C 파트로 나눠서 협업을 하고 있는데, 지금은 V 파트를 맡아서 진행중이다.

 

그렇게 협업을 하던 도중에, 다른 부분에 비해 굉장히 시간을 오래 쏟으면서 구현한 부분이 바로 네이버 아이디로 로그인하는 부분이었다.

따로 정리가 필요할 것 같다는 생각이 들어서, 정리해보려고 한다.


먼저, 네이버 아이디로 로그인하기 위해서는, 네이버 Developers 사이트에서 api를 가져와야하는데, 그러기 위해서는 애플리케이션을 등록해야한다.

나는 이미 등록을 한 상태이다. 여기까지 진행하는 것은 어렵지 않았다.

프로젝트 팀명이 코마이기 때문에, 나는 애플리케이션 이름을 코마라고 정하였다.

해당 사이트에서 이메일만 추출하도록 설정하였기 때문에, 개인정보는 이메일만 제공된다.

 


 // 네이버 로그인
      //  https://developers.naver.com/docs/login/devguide/devguide.md
      // 에서 데이터를 가져왔다고 보면 됨
      var naver_id_login = new naver_id_login( // 네이버 로그인을 위한 객체 생성
      "내 클라이언트 ID", // 내 client ID: 네이버 개발자 센터에서 발급받은 클라이언트 ID
      "http://localhost:8088/project-climbing/login.jsp" // 내 callback url: 로그인 후 보여질 URL
      );

      // 네이버 로그인 객체를 생성하고, 고유한 상태 값을 생성
      // 이 값은 로그인 요청과 응답을 연결하기 위해 사용됨
      var state = naver_id_login.getUniqState();

      // 로그인 버튼의 디자인
      // "green"은 버튼 색상, 2는 버튼 모양 (모양은 네이버 개발자 문서 참조), 40은 버튼 크기
      // 네이버 개발자 문서 - https://developers.naver.com/docs/login/bi/bi.md
      naver_id_login.setButton("green", 2, 40);

      // 이 로그인 API를 사용할 페이지의 주소를 설정
      // 이 주소는 네이버 로그인 API에서 검증하는 페이지 주소
      naver_id_login
            .setDomain("http://localhost:8088/project-climbing/login.jsp");

      // 로그인 요청에 사용할 상태 값을 설정
      // 이 값은 CSRF 공격( 사이트 간 요청 위조 공격 )을 방지하기 위해 사용됨 
      naver_id_login.setState(state);

      // 로그인 팝업을 사용할 수 있도록 설정
      // 사용자가 로그인 버튼을 클릭했을 때 팝업창이 열리게 됨
      //naver_id_login.setPopup();

      // 네이버 로그인 초기화: 설정한 값을 바탕으로 네이버 로그인 기능을 초기화
      // 이 메소드가 호출되어야 네이버 로그인 버튼이 제대로 작동됨
      naver_id_login.init_naver_id_login();
      
        //로그인 정보가 있다면 naverLoginCallback() 함수 호출
         naver_id_login.get_naver_userprofile("naverLoginCallback()");


      // 네이버 로그인 버튼 클릭 시 처리 함수
      function naverLoginCallback() {
         // 네이버 사용자 정보 가져오기
         var naverUserInfo = naver_id_login.getProfileData('email');
         if (naverUserInfo) {
            // 이메일 추출
            var email = naverUserInfo;
            // 이메일 정보 C에게 전송
            sendToController({
               email : email
            });
         }
      }

      // 네이버 로그인 상태 확인 및 사용자 정보 처리 함수
      function getNaverUserInfo() {
         // 네이버 로그인 상태라면
         if (naver_id_login.getLoginStatus()) {
            naverLoginCallback(); // 콜백함수 호출
         } else {
            // 로그인 상태가 아닐 경우 경고
            alert("로그인 상태가 아닙니다.");
         }
      }
      
      // 네이버 로그인 버튼 클릭 시 getNaverUserInfo 호출
      document.getElementById('naver_id_login').addEventListener('click', function() {
         getNaverUserInfo();
      });

      // 네이버 로그인 api 끝

 

주의사항이라면 콜백 url은 네이버 developers 사이트에서 로그인 API 서비스 환경에서 Call back URL에 내가 입력한 주소를 입력해야한다.

 

자세한 코드는 https://github.com/yn-j-98/2024record/blob/main/project-climbing/src/main/webapp/login.jsp

 

2024record/project-climbing at main · yn-j-98/2024record

수업내용 정리 + 코드 . Contribute to yn-j-98/2024record development by creating an account on GitHub.

github.com

내 깃허브에 기록해두었다.

 

'웹' 카테고리의 다른 글

MVC 패턴으로 프로젝트 진행 시 유의사항  (1) 2024.09.03
이미지파일 업로드  (0) 2024.08.29
핸들러 매핑, 싱글톤 패턴  (0) 2024.08.21
'웹' 카테고리의 다른 글
  • MVC 패턴으로 프로젝트 진행 시 유의사항
  • 이미지파일 업로드
  • 핸들러 매핑, 싱글톤 패턴
yn98
yn98
좌우명 : 여전할 것 인가, 역전할 것 인가? 백엔드 개발자가 되고싶은 역전하고 있는 개발자 꿈나무의 블로그입니다. 개발을 하면서 공부한 것들을 기록합니다. 24.06 ~
  • yn98
    개발 꿈나무
    yn98
  • 전체
    오늘
    어제
    • 분류 전체보기 (131)
      • Python (3)
      • 공부 (7)
      • DB (7)
      • JAVA (24)
      • JSP (9)
      • jQuery (2)
      • HTML (3)
      • Spring (20)
      • 웹 (4)
      • C (1)
      • Git (2)
      • 에러일기 (19)
      • 프로젝트 (6)
      • 책 (21)
        • 멘토씨리즈 자바 (14)
        • 2024 수제비 정보처리기사 (7)
      • 기타 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
    • Notion
  • 공지사항

  • 인기 글

  • 태그

    ViewResolver
    객체지향
    오버로딩
    정처기 실기
    java
    html
    DispatcherServlet
    @repository
    정보처리기사
    recoverabledataaccessexception
    codeup 4891 : 행복
    이벤트 스케줄러
    Di
    2-layered 아키텍처
    상속
    aop
    jsp
    오블완
    생성자
    정보처리기사 실기
    MVC
    스프링 프레임워크
    어노테이션
    티스토리챌린지
    정처기
    멘토씨리즈 자바
    @service
    Spring
    수제비
    @Component
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
yn98
[JSP, JavaScript] 네이버 로그인 API
상단으로

티스토리툴바