Coding History/project 33

1차 개인프로젝트 발표. (중간 간담회)

오늘 발표 진행을 했다.나의 발표.솔직히 발표 준비 그렇게 열심히 하지 않았다. 지금 구현중인 파일 업로드와 동시에 DB저장이 제대로 되지 않아서 며칠동안 벨로그 작성하면서 계속 해결중이라 업로드도 더딘 것. 그래서 발표준비에 그렇게 큰 시간을 쓸 시간은 없었다.하지만 의외로 강사님께서는 나에게 칭찬을 해주셨다.칭찬 받은 점.나는 google, spotify, 즉 소셜 로그인을 시큐리티를 통해 OAuth2 인증을 받아서 사용자가 사용할 수 있게 구현을 했다.이에 대한 코딩을 할 때 닥친 문제가 많았고 결국은 어떻게 해결해내어서 소셜로그인이 문제 없이 작동하고, 또 spotify api를 통한 플레이어를 가져오는 것 까지 구현을 해뒀다. (JWT인증을 구현하려다가 시큐리티 선에서 자동으로 처리하는 것을 알..

지금까지의 기술스텍 및 기능정의서

완성은 아직 멀긴 했는데 발표 준비로 미리 써야될 것 같아서 한번 써본다.기술 스택1. 프레임워크 및 언어Java 17: 최신 LTS(Long Term Support) 버전의 Java를 사용하여 애플리케이션을 개발.Spring Boot 3.x: REST API 개발과 보안, 데이터 관리 등을 처리하는 기본 프레임워크.Spring Security: OAuth2 클라이언트 및 JWT 기반 인증 구현. 사용자 인증과 권한 관리를 담당.Spring Data JPA: 데이터베이스 접근을 위한 ORM(Object Relational Mapping) 기술을 사용하여, 엔티티와 데이터베이스 간의 매핑을 자동화.2. 데이터베이스MySQL: 관계형 데이터베이스.JPA / Hibernate: Java Persistence ..

회원가입 로그인 로직 중, 중복 이메일 처리.

지금 뭐 중복 이메일 처리 자체는 시큐리티 때문에 잘 되는데 로그인과 회원가입만 막는거지 알람 같은건 뜨지 않아서 유저가 영문도 모른채 다른 아이디를 사용해야된다는 불편함이 있다.문제 발견 이유.현재 내 스포티 파이 계정의 이메일과 세개의 구글 계정중 하나가 이메일이 같아서 알게 되었다.그래서 기존 Ut 클래스를 사용해서 알람을 띄워보려고 했다. if (localUser.isPresent()) { return new CustomOAuth2User(localUser.get(), oAuth2User.getAttributes()); } else { // 이메일 중복 확인은 새로운 회원을 등록할 때만 실행 if (memberRe..

[IDE-인텔리제이] java.lang.ClassCastException 오류 해결.

Module 'blackbirdLOFI' production: java.lang.ClassCastException: class org.jetbrains.jps.builders.java.dependencyView.TypeRepr$PrimitiveType cannot be cast to class org.jetbrains.jps.builders.java.dependencyView.TypeRepr$ClassType (org.jetbrains.jps.builders.java.dependencyView.TypeRepr$PrimitiveType and org.jetbrains.jps.builders.java.dependencyView.TypeRepr$ClassType are in unnamed module of l..

추천 곡 랜덤화와 앨범 이미지까지 삽입하기.

계속 로그인하면서 테스트하다가 알았는데 계속 같은 곡들이 나열되어있는 것을 알았다.이걸 랜덤한 곡으로 추천하고 싶어서 랜덤성을 부여해보도록 결정. 그리고 ui가 조금 더 깔끔하게 보일 수 있게 수정하는 것이 필요했다.랜덤성 부여는 offset 활용으로 쉽게 적용했다. 그 때 겪었던, text interpolation 이슈도 신경써서 처리해서 오류 없이 바로 해결했다.// offset을 랜덤하게 설정 (예: 0에서 90까지의 랜덤 값)const randomOffset = Math.floor(Math.random() * 90); // 0부터 90 사이의 랜덤 숫자fetch(`https://api.spotify.com/v1/search?q=lofi&type=track&limit=10&offset=${'${ra..

로그인 하지 않으면 메인페이지 접근 안되는 문제

원래 접근이 됐었는데 스포티파이 플레이어 적용하려고 메인 컨트롤러를 고치고 난 이후에 접속이 안되는 것을 확인했다. @RequestMapping("/usr/home/main") public String showMain(@AuthenticationPrincipal OAuth2User principal, Model model, OAuth2AuthenticationToken authentication) { System.err.println("===================메인페이지 접근====================="); // 토큰을 관리하고 자동으로 갱신 처리 OAuth2AuthorizedClient authorizedClient = authoriz..

스포티파이 플레이어 임베드하기. (원하는 재생목록도 가져오기)

메인 페이지? 대충 완성했으니까 이제 써야지 스포티파이 API jsp에 해당 코드 작성해서 일단은 플레이어가 불러와지는가 체크했다.아무 곡이나 불러와지네.그럼 이제 이걸 Lofi 장르만 가져오도록 해야되는데 이제부터가 어떻게 해야되는가이다.우선 방법을 대충 알아왔다.순서는 이렇다.OAuth2 인증 받기.엑세스 토큰 발급.시큐리티에서 토큰이 관리되니까 여기서 가져와야함.(OAuth2AuthorizedClientService을 사용해서 가져옴.)여기서 가져온 토큰 값을 다시 메인 페이지로 전달.JSP에서 템플릿에 엑세스 토큰을 js로 전달.클라이언트 측에서 전달받은 엑세스토큰을 Spotify API에게 요청.약간 이런 단계인데 대충 요약해서 말해보자면 로그인할 때 토큰 받아..

메인 페이지 일단 대충 만들기. (구글 로그인 프로필 사진 가져오기.)

하는 와중에 또또또또또 시큐리티가 문제가 좀 있었는데,스타일을 따로 빼서 css 저장후 불러오려고 하니까 못불러와서 좀 한참 헤매다가 시큐리티가 차단하고 있는 걸 알아서 이 문제 부터 해결하고 가자.아니네, 보니까 설정은 잘 되어 있다.그래서 예전에 css어떻게 불러왔는지 깃 뒤져보니까.여기서 type="text/css"이게 빠져있었다. ㅇㅇ.. 해결.우선 그래서 메인 페이지 대충은 구현했다.여기서 유저에 구글 로그인할 때 받는 이미지를 넣을 생각이다. @Override public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException { // 기본적으로 OAuth2User 정보..

스포티파이 API 적용하기 시작! (로그인 부터)

spotify API는 내가 예전에 통 번역해서(GPT 시켜서) 업로드 해 놓았다. 그거 보면서 하면 됨.우선 해당 사이트 가입해서 클라이언트 ID와 비밀번호 발급부터 받아보자.난 일단 이렇게 제출해서 받아냈다. 이제 프로젝트에 연결시켜보자. 우선 저번에 JWT할 때 환경변수는 잘 안먹는다는 것을 알았기 때문에 프로젝트 상에서 변수로 만들어서 저장해주고.(하는 김에 구글도 변수 처리 해줬다.) security: oauth2: client: registration: google: client-id: 742772456036-mvhbsvmdcmv0mjtev6sjqjjdg3t3tcfv.apps.googleusercontent.com # 구글 클라..