본문 바로가기

Spring/Spring Boot20

[Spring - OAuth2.0] 확장성 갖춘 소셜 로그인 구현 Google, Kakao, Naver 등 다양한 환경에 확장성을 갖춘 형태로 소셜 로그인을 구현해보자. 일단 Kako, Naver 두 환경을 대상으로 하며, 각 Developers 홈페이지에서 Application을 생성한 상태임을 가정하고 진행할 것이다. 참고 사항 카카오 로그인의 경우 '개인정보 동의항목 심사 신청'이 완료되기 전까지는 닉네임, 카카오계정(이메일) 등의 데이터만 불러올 수 있다. 본 글에서는 일단 닉네임과 이메일을 불러오는 것으로 진행하겠다. 네이버 로그인의 경우 서비스 상태가 '개발중'인 경우, 테스터 ID 등록 후 해당 계정에 한해서만 소셜 로그인을 적용해볼 수 있다. Naver Developers/내 애플리케이션/멤버관리에서 테스터 ID를 등록하고 진행하자. build.gradl.. 2024. 1. 18.
[Spring Boot - Zoom] 회의실 자동 생성 #2. REST API 이번 글에서는 발급한 access token을 바탕으로 Zoom Meeting API를 이용해 회의실을 생성해볼 것이다. access token 발급 과정은 지난 게시글을 참고하면 된다. 목차 1. Zoom App 생성 2. OAuth 2.0 설정 3. Zoom Meeting API 3-1. 전체 Flow 이해하기 우선 공식 문서를 따라 Create Meeting API 플로우를 이해해보자. 3-1-1. Endpoint Endpoint에 필요한 path parameter 'userId는 me value라는 명칭으로 소개되고 있는데, 이는 user ID나 이메일 주소 값을 사용한다고 한다. 우리는 이메일 주소를 이용할 것이다. 3-1-2. Request Body Zoom Meeting API는 다양한 요소.. 2024. 1. 3.
[Spring Boot - Zoom] 회의실 자동 생성 #1. OAuth2.0 Spring Boot 서버에서 Zoom 회의실을 자동 생성해보자. 이번 글은 Zoom REST API를 사용하기 위한 App 생성, OAuth2.0 설정 파트를 소개할 것이다. 목차 1. Zoom App 생성 2. OAuth 2.0 설정 3. Zoom Meeting API (다음 글에서 계속) Environment Java 17 Spring Boot 3.1.4 1. Zoom App 생성 1-1. Zoom App Marketplace 접속 및 로그인 https://marketplace.zoom.us/ App Marketplace marketplace.zoom.us 1-2. Develop / Build App Server-to-Server OAuth app을 생성해준다. https://developers.z.. 2024. 1. 3.
[Spring Boot - Firebase] 연동하기 준비물 : Firebase 프로젝트 기존 Firestore Database에서 스프링 서버로 데이터를 불러오기 위해 연동하는 과정을 진행해 볼 것이다. Firebase 프로젝트는 이미 생성했다고 가정하고 진행하겠다. 1. Firebase 비공개 키 다운로드 Firebase 프로젝트 대시보드의 프로젝트 개요 / 프로젝트 설정 / 서비스 계정으로 이동한다. SDK 언어를 Java로 설정한 후, 새 비공개 키 생성을 클릭한다. 스프링 프로젝트의 src / main / resources에 다운받아진 json 비공개 키를 복붙한다. 파일명은 각자 지정하면 되는데, 나는 firebaseServiceAccountKey.json으로 저장했다. 2. FirebaseConfig 설정 스프링부트 프로젝트에 FirebaseC.. 2023. 10. 28.
[Spring Boot] 주기적 코드 실행 서베이지에서는 활성 패널의 수에 따라 수집 가능한 최대 응답수가 달라지게 된다. 이에 따라 서베이지는 10일 단위로 활성 패널의 현황을 자동 업데이트하는 기능을 도입하기로 결정했다. 오늘은 Spring Boot의 @Scheduled을 이용하여 10일마다 실행되는 scheduled task를 만들어 볼 것이다. 1. @EnableScheduling 스프링의 scheduled task 실행을 가능하게 하는 어노테이션이며, 메인 Application에 붙여준다. @SpringBootApplication @EnableScheduling public class SurveasyApplication { public static void main(String[] args) { SpringApplication.run(S.. 2023. 10. 23.
[Spring boot - OAuth2] Naver Login 구현 #2 오늘은 인가 코드를 이용해 사용자 정보를 받아오는 코드를 작성해볼 것이다. [참고] Naver Developers https://developers.naver.com/docs/login/devguide/devguide.md#3-1-3-%ED%95%84%EC%88%98-%ED%95%AD%EB%AA%A9-%ED%99%95%EC%9D%B8 네이버 로그인 개발가이드 - LOGIN 네이버 로그인 개발가이드 1. 개요 4,200만 네이버 회원을 여러분의 사용자로! 네이버 회원이라면, 여러분의 사이트를 간편하게 이용할 수 있습니다. 전 국민 모두가 가지고 있는 네이버 아이디 developers.naver.com 1. 환경설정 (1) build.gradle (2) SecurityConfig (3) application.. 2023. 3. 4.
[Spring boot - OAuth2] Naver Login 구현 #1 카카오, 네이버 등 다양한 환경에서 확장성을 갖춘 소셜 로그인 구현 방법이 궁금하시면 아래 게시글을 참고하셔도 좋습니다 https://hyeminseo.tistory.com/205 [Spring - OAuth2.0] 확장성 갖춘 소셜 로그인 구현 Google, Kakao, Naver 등 다양한 환경에 확장성을 갖춘 형태로 소셜 로그인을 구현해보자. 일단 Kako, Naver 두 환경을 대상으로 하며, 각 Developers 홈페이지에서 Application을 생성한 상태임을 가정하고 진 hyeminseo.tistory.com 오늘은 네이버 로그인을 위한 사전 작업을 해볼 것이다. 사전 작업이란, 네이버 개발자 계정으로 어플리케이션을 만드는 일이다. 1. Naver Developers 접속 https://.. 2023. 3. 4.
[Spring boot - OAuth2] Google Login 구현 #2 오늘은 구글 로그인으로 회원 정보를 받아올 것이다. 1. SecurityConfig 설정 // SecurityConfig.java // [추가 1] @Autowired private PrincipalOauth2UserService principalOauth2UserService; @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable(); http.authorizeRequests() .antMatchers("/user/**").authenticated() .antMatchers("/manager/**").access("hasRole('ROLE_ADMIN') or hasRole('ROLE_MANA.. 2023. 2. 8.
[Spring boot - OAuth2] Google Login 구현 #1 오늘은 구글 로그인을 위한 사전 설정을 진행할 것이다. 1. Google API Console 접속 https://console.developers.google.com Google 클라우드 플랫폼 로그인 Google 클라우드 플랫폼으로 이동 accounts.google.com 2. 프로젝트 만들기 2-1. 프로젝트 선택 2-2. 새 프로젝트 2-3. 프로젝트 이름을 설정하고 '만들기' 3. OAuth 동의 화면으로 이동 3-1. User Type '외부' 설정 3-2. 앱 이름, 사용자 지원 이메일, 개발자 이메일 입력하고 '저장 후 계속' 3-3. 범위, 테스트 사용자는 기본 상태 그대로 '저장 후 계속' 4. 사용자 인증 정보 4-1. 사용자 인증 정보로 이동하고 '사용자 인증 정보 만들기' 클릭 4.. 2023. 2. 2.