Post

Kakao SignIn




Kakao SignIn



1. 소셜로그인

소셜로그인 기능 구현

1.1. 로그인 페이지

CLIENT_ID와 REDIRECT_URI는 백엔드 로직을 맞춰보면서 설정 계획

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import React from "react";
import styled from "styled-components";

function KakaoSignIn() {
  const CLIENT_ID = "";
  const REDIRECT_URI = "http://localhost:3000/"; // 뒤 경로 백앤드와 설정
  const KAKAO_AUTH_URL = `https://kauth.kakao.com/oauth/authorize?client_id=${CLIENT_ID}&redirect_url=${REDIRECT_URI}&response_type=code`;

  const kakaoLoginBtn = () => {
    window.location.href = KAKAO_AUTH_URL;
  };

  return (
    <KakaoBtn onClick={kakaoLoginBtn}>
      <img src="" alt="kakaologo" />
      <span>카카오 로그인</span>
    </KakaoBtn>
  );
}

export default KakaoSignIn;

1.2. 리다이렉트 페이지

  • 위 로그인 페이지가 잘 띄워졌으면 완료 후 리다이렉트 페이지로 이동된다.
  • 리다이렉트 주소에 맞춰 라우터 설정해서 띄워주는 페이지에서 안보이는 로직들 실행
1
<Route path="/백엔드와 맞춘 리다이렉트 경로 넣기" element={<Redirection/>}/>
  • 토큰값이 어떻게 들어오는지 보고 조정
  • 로그인중 알 수 있게 스피너 넣어주기
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
32
33
34
35
36
import React, { useEffect } from "react";
import api from "../../services/api";
import { useCookies } from "react-cookie";
import { useNavigate } from "react-router-dom";

function Redirection() {
  const navigate = useNavigate();
  const [Cookies, setCookie, RemoveCookie] = useCookies("oCookie");
  // window.location.href현재 페이지 url에서 searchParams params를 추적
  // .get('code') code를 빼온다.
  let code = new URL(window.location.href).searchParams.get("code");

  // 카카오 코드 주는 주소 백에서 알려달라하기 api수정할 수도..
  // 토큰 어떻게 들어오는지 보기
  const postKakao = async () => {
    try {
      const response = await api.post("", code);
      console.log(response.data);
      setCookie("tokenName", response.data, {
        path: "/경로",
        secure: true
      });
      navigate("/");
    } catch (error) {
      console.log("Login failed:", error);
    }
  };

  useEffect(() => {
    postKakao();
  }, []);

  return <div>로그인 중입니다.</div>;
}

export default Redirection;

1.3. 생각

아직 서버와 연결을 안 해 봐서 잘 작동할지 모르겠다.
세부적인건 연결하면서 하나씩 조정해봐야겠다.

This post is licensed under CC BY 4.0 by the author.