프로그래밍/Open API

카카오 로그인 인증 API 사용하기

Beginner:) 2025. 3. 25.
320x100

기본적으로 카카오 ID는 있고 로그인이 되어있다는 가정하에...

 

1. 카카오 Developer 진입

먼저 카카오 Developer에 로그인한다.

https://developers.kakao.com/

 

카카오 로그인 인증 API 사용하기 - undefined - 1. 카카오 Developer 진입

 

 

 

2. 플랫폼 입력

"애플리케이션 추가하기"를 클릭한 뒤, 애플리케이션의 정보를 입력한다.

카카오 로그인 인증 API 사용하기 - undefined - 2. 플랫폼 입력

 

카카오 로그인 인증 API 사용하기 - undefined - 2. 플랫폼 입력

 

애플리케이션으로 들어가면 키들이 존재하는데, 사용목적에 맞는 키의 정보를 복사한다.

일반적인 web login인 경우 "REST API키"를 선택하면 된다.

카카오 로그인 인증 API 사용하기 - undefined - 2. 플랫폼 입력

 

 

다음으로는 플랫폼을 선택한다. Web Login의 경우 "Web"을 선택하면 된다.

카카오 로그인 인증 API 사용하기 - undefined - 2. 플랫폼 입력

 

Web의 도메인을 선택하면 Redirect URI를 등록한다.

카카오 로그인 인증 API 사용하기 - undefined - 2. 플랫폼 입력

 

활성화 상태를 ON으로 해주고 Redirect URI를 등록해 준다.

카카오 로그인 인증 API 사용하기 - undefined - 2. 플랫폼 입력

 

카카오 로그인 인증 API 사용하기 - undefined - 2. 플랫폼 입력

 

 

3. 코드구현

.env

KAKAO_CLIENT_ID=
KAKAO_REDIRECT_URI=

 

server.js

require("dotenv").config();
const express = require("express");
const cors = require("cors");

const app = express();
app.use(express.json());
app.use(cors());

const PORT = process.env.PORT || 3000;

app.get("/", (req, res) => {
    res.sendFile(__dirname + "/public/index.html");
});

const axios = require("axios");

app.get("/kakao/login", (req, res) => {
    const state = Math.random().toString(36).substr(2, 10);
    const KAKAO_AUTH_URL = `https://kauth.kakao.com/oauth/authorize?response_type=code&client_id=${process.env.KAKAO_CLIENT_ID}&redirect_uri=${encodeURIComponent(process.env.KAKAO_REDIRECT_URI)}&state=${state}`;

    res.redirect(KAKAO_AUTH_URL);
});

app.get("/callback", async (req, res) => {
    const { code, state } = req.query;

    if (!code) {
        return res.status(400).json({ error: "카카오 로그인 실패" });
    }

    try {
        const response = await axios.post("https://kauth.kakao.com/oauth/token", null, {
            params: {
                grant_type: "authorization_code",
                client_id: process.env.KAKAO_CLIENT_ID,
                redirect_uri: process.env.KAKAO_REDIRECT_URI,
                code: code,
                state: state
            },
            headers: { "Content-type": "application/x-www-form-urlencoded;charset=utf-8" }
        });

        const accessToken = response.data.access_token;

        res.redirect(`/kakao/user?access_token=${accessToken}`);
    } catch (error) {
        console.error("Access Token 요청 실패:", error.response?.data || error.message);
        res.status(500).json({ error: "토큰 요청 실패" });
    }
});

app.get("/kakao/user", async (req, res) => {
    const { access_token } = req.query;

    if (!access_token) {
        return res.status(400).json({ error: "access_token이 필요합니다." });
    }

    try {
        const response = await axios.get("https://kapi.kakao.com/v2/user/me", {
            headers: { Authorization: `Bearer ${access_token}` }
        });

        res.json(response.data);
    } catch (error) {
        console.error("사용자 정보 요청 실패:", error.response?.data || error.message);
        res.status(500).json({ error: "사용자 정보 요청 실패" });
    }
});

app.listen(PORT, () => {
    console.log(`start http://localhost:${PORT}`);
});

 

 

index.html

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>카카오 로그인 샘플</title>
</head>
<body>

    <h2>카카오 로그인</h2>
    <a id="kakaoLoginBtn" href="/kakao/login">카카오 로그인</a>


</body>
</html>

 

Sample URL

http://110.13.154.24:5000/learn/loginplatform/-/tree/kakao?ref_type=heads

 

4. 예제

카카오로 로그인하게 되면 제공받을 서비스의 동의를 구하게 되고 

카카오 로그인 인증 API 사용하기 - undefined - 4. 예제

 

 

동의를 구하면 code값으로 해당 데이터를 불러온다.

카카오 로그인 인증 API 사용하기 - undefined - 4. 예제

반응형

'프로그래밍 > Open API' 카테고리의 다른 글

구글 로그인 인증 API 사용하기  (0) 2025.03.27
네이버 로그인 인증 API 사용하기  (0) 2025.03.24