Search

#090 #OAuth2.0 #샘플링 코드02

UserContoller 내부

callBack 메소드 생성

UserService 내부

카카오 로그인 메소드 로직

로직 정리
1.
code로 카카오에서 토큰 받기 (위임완료) - 여기가 Oauth2.0 프로토콜 완료
2.
토큰에서 사용자 정보 받기 (PK, Email)
3.
해당정보로 DB조회 (있을수, 없을수)
4.
있으면? - 조회된 유저정보 리턴
5.
없으면? - 강제 회원가입 (절대 중복되지 않을 값을 넣어줘야 된다 : provider_pk)
a.
유저네임 : (provider_pk)
b.
비밀번호 : UUID
c.
이메일 : 받은 값 그대로
d.
프로바이더 : kakao

address 필드 추가

이 주소는 상품 구매시에 받으면 된다. 가입할 때 받으면 UX가 최악이 된다. 필드 추가하고 생성자 다시 만들어주자.

카카오 개발자 센터 들어가기

사이트 바로가기

우린 이것을 할 것임

인증과 권한의 차이

인증은 내가 접속할 수 있는 권한 인가는 내가 수정할 수 있는 권한
- 엑세스 토큰: 짧은 수명의 토큰으로, API 요청 시 사용자를 인증하고 권한을 부여하는 데 사용됩니다. - 리프레시 토큰: 엑세스 토큰이 만료되었을 때 새로운 엑세스 토큰을 발급받기 위해 사용되는 긴 수명의 토큰입니다.
카카오 엑세스 토큰 만료 시간

Oauth의 4가지 주체

앱 설정

이 순서 기억하기 플랫폼 등록 >> 카카오 로그인 활성화 >> RedirectURI 등록 >> 동의항목

플랫폼 등록하기

웹 서비스는 웹으로 등록, 플러터는 안드로이드 또는 IOS

// 기본 도메인 : 만약 로컬 테스트용 프로젝트라면 http://localhost:8080
JavaScript
복사

리디렉션 등록

동의항목 클릭

요 순서인데, 클릭을 어디를 해야되는 지 찾을 수가 없음…;;;
여기 동의항목 메뉴가 있다.

연동 개발

웹은 authoriztion code 방식이고 앱은 크레덴셜 방식

인가 코드 받기

// GET 요청 하면 인가 코드를 발급 받는다. https://kauth.kakao.com/oauth/authorize
JavaScript
복사
쿼리 파라메터로 이 정보를 포함해서 던져줘야 된다. clientID → 내 restAPI 값 redirect_uri → 이건 구현이 되어있어야 겠지? response_type → code
// 수업용 인가코드 받는 주소 // 내 꺼는 내꺼대로 만들어 줘야된다. 이건 선생님꺼. // 나의 restAPI를 clientID에 붙여서 요청 https://kauth.kakao.com/oauth/authorize?redirect_uri=http://localhost:8080/oauth/callback&response_type=code&client_id=f00bd4f8c9f911e1f0e602eda55bbd52
JavaScript
복사
// 이건 내거 https://kauth.kakao.com/oauth/authorize?redirect_uri=http://localhost:8080/oauth/callback&response_type=code&client_id=e8c7ee8b96bccb1d6806c8946fbbb1c9
JavaScript
복사
이 화면이 뜬다.

/ 코드가 정말 다 들어오는 지 확인 해보자.

302 요청이 떳다.

첫 번쨰 302를 분석해보면
내가 던져준 값이 보인다.
그럼 위의 location으로 리다이렉션을 해준다.

아무렇게나 쿼리스트링으로 임시코드를 넣어보자.. 콜백이 호출 되었다고 Oauth가 된거일까????

여기 임시코드는 아무렇게나 던진 값인데, 이렇게 콜백이 떳다고 Oauth가 되었다고 생각하면 안된다!!!! 이 임시코드를 카카오에게 다시 검증 요청을 해서 토큰을 받아야 한다.