React 카카오로그인 구현
Backend개발을 준비하면서 React를 쓰게 된 이유
- 프로젝트 Refactoring을 하면서 프론트 쪽으로 소셜 로그인이 넘어가고 인원이 부족하여 도와주게 됌.
import axios from "axios";
import { useEffect } from "react";
import api from "../../axios";
const { Kakao } = window;
function KaKaoLoginRedirect(initialState = {}) {
useEffect(() => {
let code = new URL(document.location.toString()).searchParams.get("code");
let grant_type = "authorization_code";
let client_id = process.env.REACT_APP_JS_SDK_KEY;
axios.post(
`https://kauth.kakao.com/oauth/token?grant_type=${grant_type}&client_id=${client_id}&redirect_uri=${process.env.REACT_APP_FRONTEND_BASE_URL}/oauth/callback/kakao&code=${code}`,
{
headers: {
"Content-type": "application/x-www-form-urlencoded;charset=utf-8",
},
}
).then((res) => {
console.log("res",res);
Kakao.Auth.setAccessToken(res.data.access_token);
Kakao.API.request({
url: "/v2/user/me",
})
.then(function (response: any){
console.log(response);
})
.catch(function (error: any){
console.log(error);
});
api.post("/api/user/account/login/kakao",{
accessToken: res.data.access_token,
})
.then((res) => {
console.log(res);
})
})
})
return <></>;
}
export default KaKaoLoginRedirect;
interface Window {
Kakao: any;
}
<Route
path="/oauth/callback/kakao"
element={<KaKaoLoginRedirect />}
/>
export const CLIENT_ID = process.env.REACT_APP_JS_SDK_KEY;
export const ADMIN_KEY = process.env.REACT_APP_ADMIN_KEY;
export const REDIRECT_URI = ~~~~~~~~~
export const LOGOUT_REDIRECT_URI = ~~~~~~~
export const BASE_URL = "http://localhost:3000";
export const KAKAO_AUTH_URL = `https://kauth.kakao.com/oauth/authorize?client_id=${CLIENT_ID}&redirect_uri=${REDIRECT_URI}&response_type=code`;
export const KAKAO_LOGOUT_URL = `https://kauth.kakao.com/oauth/logout?client_id=${CLIENT_ID}&logout_redirect_uri=${LOGOUT_REDIRECT_URI}`;
import axios from "axios";
const api = axios.create(
{
baseURL: process.env.REACT_APP_FRONTEND_BASE_URL,
withCredentials: true,
headers:{
"Content-type": "application/json",
},
});
export default api;