2024/09 32

구글 로그인 이후 내 애플리케이션에 데이터 삽입하기

전 포스팅에서 구글 로그인 자체는 성공했다. firebase에서 인증을 통과 받았다는 뜻. 콘솔에서는 구글계정에서 받아온 데이터가 확실히 남은 것을 확인했으니 이제 이 데이터를 JAVA 프로젝트로 보내주면 된다.// 로그인 성공 후 사용자 이메일을 가져와서 서버로 요청을 보내는 코드onAuthStateChanged(window.auth, (user) => { if (user) { const email = user.email; // 서버로 Firebase 유저 정보를 요청 fetch(`/firebaseUser?email=${email}`) .then(response => response.text()) .then(data =>..

OAuto2 인증 받아 구글 로그인 구현중

이제 진짜 본론으로 드디어 도달할 수 있게 되었다.일단 내가 생각했을 때, 구글로그인을 구현해가는 방법이나 순서를 생각의 흐름대로 나열해보자.Thinking Flow난 로컬 유저와 소셜유저를 아예 나눌 생각이다. 그래서 이메일로 로그인하게끔 만든거고, 테이블의 소셜 두개를 따로 둬서 해당 두개의 값이 다 null이라면 로컬인거고 둘 중 하나가 채워져있다면 소셜로그인인것. 두개는 스포티파이와 구글이다. 일단 난 구글에 집중해야되니, 스포티파이는 빼놓자고.그렇다면 어떻게 해야할까. 소셜로그인의 작동 방식은 조금만 생각해도 유추가 된다. 일단은 로그인 시도, 일치하는 정보가 없다? 그러면 바로 회원가입을 자동으로 처리 이후에 다시 로그인을 시켜준다. 이게 일반적인 소셜로그인의 방식일 것이다.그럼 이제 대충 그..

VO, DTO, Entity의 차이점

최근 내 개인프로젝트를 준비하면서 mybatis를 버리고 JPA 도입했다. 그 과정에서 객체를 담당하는 클래스를 VO에서 Entity로 바꾸는 과정이 있었는데, 솔직히 암만 봐도 같은 기능인데 차이점이 뭐길래 이름을 바꾸는가 궁금해서 알아왔다.1. VO (Value Object)정의VO(Value Object)는 값 그 자체를 표현하는 객체. 동일한 값을 가지고 있으면 동일한 객체로 취급됨. 불변성을 보장하며, 값 자체를 비교하기 때문에 객체의 ID나 참조가 아닌 내용으로 동일성을 판단한다.주요 특징불변성: VO는 생성 후 상태가 변하지 않는다. 값을 수정하려면 새로운 VO 객체를 생성해야 한다.동일성 판단: VO는 객체의 상태(값)가 동일하면 같은 객체로 간주된다.비즈니스 로직 포함 가능: VO는 값과..

Coding History 2024.09.09

OAuto2 인증 받아 구글 로그인 구현중(시큐리티로 로컬로그인 구현으로 변질 됨.)

자 이제 정보를 firebase에 가져오는 것 까지 성공했으니, 내 프로젝트까지 이 데이터를 받아와서 가공하고 사용해야되는 단계다.OAuto2 인증을 사용할거고, 처음엔 다들 하니까 이유가 있겠거니 였는데 이런식으로 접근하면 안되고 이유를 명확히 알아냈다.크게 딱 두가지인데 보안과 편의성 때문이다. 가져온 정보를 리소스를 통해서 직접적으로 보는게 아닌 간접적으로 가져올 수 있기 때문이다.편의성을 위해 또 돌아가야한다니 아이러니하다..아무튼 한번 해보자.앞서 한번 더 말하는데 일단 해보는거라 정답이 아닐 확률이 굉장히 높다 흐름만 봐라..나중에 성공하면 어떻게 했는지 올리겠다.일단 의존성 추가가 제일 처음 해야할 일이다. org.springframework.boot spring-boot-star..

프로젝트 Mybatis 제거 JPA 도입

OAuto2 인증을 도입하던 와중에 GPT를 고문하다가 좋을 걸 알아냈다.내 프로젝트는 지금 Mybatis로 직접 내가 쿼리를 다 써서 날리고 있는데 세상에 JPA를 사용하면 쿼리를 알아서 자동으로 날려준다는게 아닌가?바로 적용해봐야지 ㅋㅋ일단은 의존성부터 다시 설정을 하는데, Mybatis 관련 의존성은 지우고, JPA를 도입해주면 된다. 검색하면 나오니까 자기 프로젝트에 맞게 알아서들 하십쇼. 그리고 어플리케이션.yml도 JPA를 사용할 수 있게 수정해줘야한다!이후 난 VO 폴더에서 Member 클래스로 데이터를 전달했는데 이를 JPAentity패키지로 새로 만들어서 객체로 전달했다. 뭐 거의 비슷한데 어노테이션이 조금 추가 된 정도다.@Entity@Table(name = "users") // DB..

내가 생각하는 삶의 가치

간만에 슬슬 쿨타임이 돈 것 같아서 글을 써 본다. 요즘 나의 상태는 잔잔한 물과 같다. 크게 불행하지도, 또 행복하지도 않은, 딱 그 정도의 상태다. 하지만 나는 이 상태가 행복과 다름없다고 생각한다. 불행이 크지 않은 상태가 곧 행복이 아니겠는가? 공부를 하면서 무언가를 차곡차곡 쌓아간다는 건 머리가 지끈거리고, 생각할 게 많아 귀찮기도 하다. 그러나 벨로그나 티스토리에 쌓여가는 글들을 보면 또 보람차기도 하다. 국비지원 교육을 받으며 좋은 사람들을 만났다. 그중에는 중간에 관둔 친구도 있었지만, 그 친구는 할 만큼 하고 나서 안된다는 판단하에 중도 포기했으니, 그 또한 자기 살 길을 잘 찾아갈 거라고 믿는다. 며칠 전, 그 친구가 나간다고 하여 모두 함께 술 한잔하기로 했다. 나중에 우리 집으로 초..

My philosophy 2024.09.03

OAuto2 가 무엇인가?

구글 로그인 기능 구현중, 이제 OAuto2인증에 관련된 정보들을 보게 되었다. 보니까 없이도 로그인 기능 자체는 만들 수 있을 것 같긴한데 죄다 이걸 사용하니까, 이게 대체 무엇인가에 대한 궁금증이 들어서 한번 알아보려고 한다.OAuth2란 무엇인가?OAuth2는 "Open Authorization 2.0"의 약자로, 인터넷 사용자가 애플리케이션(예: 웹사이트, 모바일 앱)이 사용자 비밀번호를 직접 저장하거나 처리하지 않고 다른 애플리케이션이나 서비스의 리소스에 접근할 수 있도록 허용하는 인증 프로토콜이다. OAuth2는 사용자와 애플리케이션 간의 안전한 인증을 위해 설계되었다.OAuth2의 주요 개념리소스 소유자 (Resource Owner): 일반적으로 애플리케이션의 사용자로, 자신의 리소스에 접근..

Coding History 2024.09.03

Firebase API로 구글 로그인 처리 구현하기

이제 진짜 준비준비는 끝이고 구현시작이다.뭐가 어떻게 돌아가는지 생각하지 말고 사용방법만 익히자. 어차피 이해는 못한다.이걸 가슴에 담고 만들어보도록 하자.일단 우리가 복붙해온 코드구조를 보면 // Import the functions you need from the SDKs you needimport { initializeApp } from "firebase/app";import { getAnalytics } from "firebase/analytics";// TODO: Add SDKs for Firebase products that you want to use// https://firebase.google.com/docs/web/setup#available-libraries아마 이렇게 되어있을텐데 이..

Firebase API로 구글 로그인 처리 준비 준비

앞의 포스팅에서는 내부적인 로그인을 구현한거였고, 유저의 이메일로 로그인이후, userId랜덤 생성.(내가 실수로 기재는 안했는데 이부분도 잘 된다.)이런 방식이였고, 나머지 두개의 로그인이 필요하다. Firebase API를 이용해서 구글 로그인과, Spotify API를 이용한 로그인을 구현할 것이다. 그래서 오늘 해볼 것은 바로 전자인 Firebase를 사용해서 구글 로그인을 구현해볼 것이다. 방법은 일단 내가 해보고 마지막 문단에서 순서대로 정리해서 올려보겠다. 나도 처음 해보는거야..우선은 firebase에서 Authentication텝을 찾아 들어가보자.오 들어가보니까 구글 뿐 아니라 다른 것들도 다양하게 있다.만약 다른게 필요하다면 여기서 뽑아써도 좋을듯?? 물론 난 구글만 필요하니까 구글만..

로그인 기능 구현

우선 무엇부터해야될까 생각하던 찰나에 파일을 업로드 할 수 있으니 로그인 기능을 구현해야겠단 생각이 들었다.그래서 기존에 article 을 만들 때 쓰던 것들을 긁어오는 중이고, 다 긁어오고 오류 없이 할 수 있게 되면 google과 spotify API를 적용시켜 로그인까지 해보려고 한다.splice를 참고하고 있기 때문에 그 방식을 따라갈까 싶은데 이메일 자체를 로그인 아이디로 만들고 유저 아이디와 유저 네임, 이름을 구별하는 방식을 그대로 따라볼까 생각중이긴하다.위의 방식을 따르고 싶기 때문에 조금 가공해서 로그인 백엔드를 구성했다.일단 테이블은,CREATE TABLE `users` ( `id` int(10) NOT NULL AUTO_INCREMENT, ..