IT/Nuxt & vue

[Nuxt] 카카오 로그인 Nuxt 설정 및 카카오 정보 발급 - ②(END)

2022. 9. 16. 12:17
오늘의 명언

“ 무료 소프트웨어를 두려워하는 사람들은 자신들의 제품이 그것보다 못하기 때문이다. ”

- 데이비드 에머리 (David Emery)
목차
  1. Nuxt 카카오 로그인 설정 및 카카오 정보 발급
  2. nuxt.config 안에 카카오 SDK 스크립트 설정
  3. 카카오 Developers  Redirect URI로 등록해준 페이지 생성
  4. 발급받은 인가코드로 카카오 토큰 정보 발급
  5. 발급받은 엑세스 토큰으로(access_token) 유저 정보 조회
300x250

 

Nuxt 카카오 로그인 설정 및 카카오 정보 발급


Nuxt 프로젝트를 하나 만들어주자.


    
npx create-nuxt-app <project-name>

    
create-nuxt-app v3.4.0
✨ Generating Nuxt.js project in test
# 프로젝트명 입력
? Project name: (test)
# 프로그래밍 언어 선택
? Programming language: (Use arrow keys)
> JavaScript
TypeScript
# 패키지 매니저 선택
? Package manager: (Use arrow keys)
> Yarn
Npm
# UI 프레임워크 선택
? UI framework: (Use arrow keys)
> None
Ant Design Vue
Bootstrap Vue
Buefy
Bulma
Chakra UI
Element
Framevuerk
iView
Tachyons
Tailwind CSS
Vuesax
Vuetify.js
# Nuxt 모듈 선택
? Nuxt.js modules: (Press <space> to select, <a> to toggle all, <i> to invert selection)
>◯ Axios
◯ Progressive Web App (PWA)
◯ Content
# Linting 도구 선택
? Linting tools: (Press <space> to select, <a> to toggle all, <i> to invert selection)
>◯ ESLint
◯ Prettier
◯ Lint staged files
◯ StyleLint
◯ Commitlint
# 테스트 프레임워크 선택
? Testing framework: (Use arrow keys)
> None
Jest
AVA
WebdriverIO
# 렌더링 모드 선택 (SSR / SPA)
? Rendering mode: (Use arrow keys)
> Universal (SSR / SSG)
Single Page App
# 배포 대상 선택 (서버 호스팅 / 정적 호스팅)
? Deployment target: (Use arrow keys)
> Server (Node.js hosting)
Static (Static/JAMStack hosting)
# 개발 도구 선택
? Development tools: (Press <space> to select, <a> to toggle all, <i> to invert selection)
>◯ jsconfig.json (Recommended for VS Code if you're not using typescript)
◯ Semantic Pull Requests
◯ Dependabot (For auto-updating dependencies, GitHub only)
# GitHub 사용자명 입력
? What is your GitHub username? (username)
# 버전 관리 시스템 선택
? Version control system: (Use arrow keys)
> Git
None

 

nuxt.config 안에 카카오 SDK 스크립트 설정

  • head 안에 작성해주면된다.


    
script:[
{ src: 'https://developers.kakao.com/sdk/js/kakao.min.js' }
]

 

 

카카오 Developers  Redirect URI로 등록해준 페이지 생성

kakao-callback 페이지 URL Query로 인가코드가 발급된다.

 

발급받은 인가코드로 카카오 토큰 정보 발급

카카오 클라이언트 ID = REST API Key(개발자 앱키)

AXIOS_BASE_URL = localhost:3000

code = 인가코드

 

data 파일을 위 형식대로 만들어주고  카카오 토큰 URL로 post 요청을 한다.

 

※주의※

header application/x-www ... 이 부분이 제일 중요하다.

카카오 api 요청할시 Content-Type헤더는 이런식으로 만들어줘야한다.

 

만약에 위에처럼 Header 포함해서 보낼때 에러 발생하거나 안될시  자기 프로젝트에서

axios interceptors 설정했는지 확인해보자


    
axios.interceptors.request.use((config)=>{
config.headers["Content-Type"] = "application/json; charset=utf-8";
return config
},
(error)=>{
return Promise.reject(error)
})

axios 요청 보내기 전에 설정하는 문법으로 이미 header가 설정되어있으면  json 형식 헤더로 고정된다.

(이 원인이 아니면 댓글로 다른 무엇인지 알려주세요!!)

 

인가코드로 토큰 발급받으면 이런식으로 나옵니다.

 


 

발급받은 엑세스 토큰으로(access_token) 유저 정보 조회

header Authorization 안에 엑세스 토큰 추가해준다.

반응형

Kakao_USER_INFO_URL 로 Axios get 요청을 한다.

 

유저 정보가 조회된다.

 

이제 위에 정보를 바탕으로 서버에서는

 

1. 유저정보 받기

2. DB저장

3. jwt 토큰 발행

 

이렇게 진행된다. 

 

※ 만약 프론트에서 전부 정보를 발급받지않고 서버를 통해서 하는 방법은

1. 프론트에서 인가코드만 받고 서버로 넘겨준다

2. 서버에서 위에 방식과 같게 카카오 API URL 에 axios 요청하여 발급받아서 컨트롤하면된다. 

 

예를 들어 express에서 인가코드만 받고 카카오 토큰 발급받는 코드


    
token = await axios({//token
method: 'POST',
url: 'https://kauth.kakao.com/oauth/token',
headers:{
'content-type':'application/x-www-form-urlencoded'
},
data:qs.stringify({
grant_type: 'authorization_code',
client_id:kakao.clientID,
client_secret:kakao.clientSecret,
redirectUri:kakao.redirectUri,
code:req.query.code,
})

이런식으로 서버에서 받아서 처리하는 방식도 있다.

 

혹시나 프론트에서 발급받는 과정에 대해 보안상 이슈나 이런게 있을수도있고, 있다고하면 위 방식대로 진행하면된다.

 

 

틀리거나 다른 의견이 있는분들은 댓글로 작성해주시면 감사하겠습니다.!!

서로 공부하며 발전해가는 하루 되길 바랍니다.!

반응형
저작자표시 비영리 변경금지 (새창열림)
잘못된 내용이 있으면 댓글 부탁드립니다. 감사합니다.
Stack_Shines
Stack_Shines
프론트엔드 백엔드 학습정리 및 정보공유 블로그입니다.
'IT/Nuxt & vue' 카테고리의 다른 글
  • [Nuxt] 구글시트(google sheet)를 이용한 다국어(i18n) 자동화 처리
  • [Nuxt] 구글 로그인
  • [Nuxt] 카카오 로그인 OAuth 신청 및 설정 - ①
  • Vue.js 시작하기
느린 개발자프론트엔드 백엔드 학습정리 및 정보공유 블로그입니다.
Stack_Shines
느린 개발자
Stack_Shines
전체
오늘
어제
  • 분류 전체보기 102
    • 티스토리 10
    • IT 67
      • Library 3
      • JavaScript 3
      • TypeScript 3
      • Nuxt & vue 14
      • Nuxt3 6
      • React 4
      • NestJS 4
      • Express 9
      • CI CD 1
      • WebGl 4
      • docker 6
      • MAC 2
      • 디자인패턴 1
      • Error 4
      • 홈서버 3
    • 프로젝트 1
    • 오늘의 회고 2
    • 맛리뷰 7
    • 다이어트 5
    • 여행 1
    • 끄적끄적 일상 6
    • 생활 정보 3

인기 글

최근 글

hELLO · Designed By 정상우.
Stack_Shines
[Nuxt] 카카오 로그인 Nuxt 설정 및 카카오 정보 발급 - ②(END)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.