Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- SQL 개발자
- 티스토리챌린지
- 노마드 코더
- 노마드코더
- 구름edu
- CodeStates
- 톺아보기
- 오블완
- IT 지식
- boj
- 이해할 수 있는
- 엘리스코딩
- 백준
- js
- 개발자북클럽
- 알고리즘
- K-Digital Credit
- nomadcoders
- 자바스크립트
- SQLD
- 노개북
- javascript
- 비전공자를 위한
- 모던 자바스크립트 deep dive
- Do it! 시리즈
- 프로그래머스
- 공부를 가장한 일기일지도
- 자격증
- 제로베이스
- 최원영 저자
Archives
- Today
- Total
개발자를 희망하는 초보의 자기개발 이야기
[카카오 로그인] 리액트로 카카오 로그인 구현하기 - 프론트엔드 (1) 본문
반응형
카카오 로그인 구현하기 - 프론트엔드 (1)
카카오 로그인을 구현하려면 OAuth 2.0의 인증 흐름을 이해해야 한다. 이 글은 Kakao Developers 설정에 이어 카카오 로그인 개념 및 기본적인 프론트엔드 설정을 다룬다.
프론트엔드가 앱 등록과 카카오 로그인 활성화, 앱 키 등을 준비하기로 되어있다면 아래의 글을 먼저 확인한다.
2025.03.05 - [프론트엔드(Front-end)] - [카카오 로그인] Kakao Developers 설정
1. 카카오 로그인 흐름
카카오 로그인의 흐름은 다음과 같다.
- 카카오 로그인 버튼 클릭 → 카카오 인증 페이지로 이동
- 사용자가 로그인 및 동의 → 카카오가 인가 코드 발급
- 인가 코드(Query String으로 전달됨) 확인
- 백엔드에 인가 코드 전달 → 백엔드에서 카카오 API와 통신하여 JWT 토큰 발급
- 프론트엔드에서 JWT 토큰을 저장하고 로그인 유지
2. 환경 변수 설정(.env.local)
프로젝트의 환경 변수를 .env.local 파일에 저장한다.
NEXT_PUBLIC_KAKAO_CLIENT_ID=123asd123asd123asd123asd
NEXT_PUBLIC_KAKAO_REDIRECT_URI=localhost:3000/callback
NEXT_PUBLIC_API_URL=https://dev.abc.com/api
Next.js 환경변수 규칙: NEXT_PUBLIC_을 붙이면 클라이언트 환경에서도 변수를 사용할 수 있다.
- CRA: REACT_APP_
- Vite: VITE_
환경 변수 설명
- NEXT_PUBLIC_KAKAO_CLIENT_ID: Kakao Developers에서 발급한 클라이언트 ID
- NEXT_PUBLIC_KAKAO_REDIRECT_URI: 카카오 로그인 후 사용자가 이동할 경로
- NEXT_PUBLIC_API_URL: 백엔드 API 기본 URL
환경 변수는 Git에 올리지 않도록 .gitignore 설정을 반드시 확인한다.
3. 카카오 로그인 URL 생성
카카오 로그인 요청 URL을 생성하는 함수를 작성한다.
// kakaoAuth.ts
const CLIENT_ID = process.env.NEXT_PUBLIC_KAKAO_CLIENT_ID; // 123asd123asd123asd123asd
const REDIRECT_URI = process.env.NEXT_PUBLIC_KAKAO_REDIRECT_URI; // localhost:3000/callback
export const KakaoLogin = () => {
return `https://kauth.kakao.com/oauth/authorize?client_id=${CLIENT_ID}&redirect_uri=${REDIRECT_URI}&response_type=code`;
};
설명
- client_id: Kakao Developers에서 발급받은 앱 키
- redirect_uri: 로그인 후 돌아올 URL (카카오-프론트-백엔드 동일하게 설정해야 함)
- response_type=code: 인가 코드를 반환하도록 설정
KakaoLogin() 함수를 실행하면 카카오 로그인 URL을 생성하여 반환한다.
4. 카카오 로그인 버튼 구현
import { KakaoLogin } from "@/lib/kakaoAuth";
import Image from "next/image";
export default function KakaoLoginButton() {
return (
<button
className="cursor-pointer py-3 px-4 flex items-center bg-[#FEE500] rounded-lg"
onClick={() => {
window.location.href = KakaoLogin();
}}
>
<Image src="/images/kakao-logo.png" alt="카카오 로고" width={18} height={18} />
<span className="text-black font-semibold">카카오 로그인</span>
</button>
);
}
설명
- 버튼 클릭 시 카카오 로그인 URL로 이동 → 카카오 로그인 페이지 표시
- window.location.href = KakaoLogin(); → 카카오 로그인 창으로 리다이렉트
- 스타일: Tailwind CSS을 사용
5. 로그인 페이지에 버튼 추가
// src/app/main.tsx
import KakaoLoginButton from "@/components/KakaoLoginButton";
export default function MainPage() {
return (
<div className="flex justify-center items-center min-h-screen">
<KakaoLoginButton />
</div>
);
}
설명
- KakaoLoginButton을 가져와서 화면에 렌더링
- 버튼을 누르면 카카오 로그인 페이지로 이동하는지 확인
6. 카카오 로그인 후 인가 코드 확인하기
로그인 후 사용자는 인가 코드 (authorization code) 를 받게 된다.
로그인 후 카카오가 리디렉트하는 URL 예시:
http://localhost:3000/callback?code=nuAFZmJvzl2a5Oz5acQckm8RzTmfSTea9y1SiczkbKjZNN9XyVDNeQAAAAQKPCPnAAABlXhW9uSi-KZYUq23DA
인가 코드(Query String의 code 값)를 백엔드에 전달해야 한다. (nuAFZm....)
이어서 다음 글에서 인가 코드를 처리하는 방법 및 백엔드 연동을 진행한다.
2025.03.17 - [프론트엔드(Front-end)] - [카카오 로그인] 리액트로 카카오 로그인 구현하기 - 프론트엔드 (2)
반응형
'프론트엔드(Front-end)' 카테고리의 다른 글
[카카오 로그인] 리액트로 카카오 로그인 구현하기 - 프론트엔드 (2) (0) | 2025.03.17 |
---|---|
[카카오 로그인] Kakao Developers 설정 (1) | 2025.03.05 |
코딩 질문 잘하는 방법 (0) | 2024.08.22 |
자주 사용하는 마크다운 문법 12가지 (0) | 2024.08.05 |
웹의 주요 프로그래밍 언어 3가지 (2) | 2023.11.04 |