Skip to content

Commit

Permalink
feat: uuid utilize, comment to js doc, action to loader function
Browse files Browse the repository at this point in the history
  • Loading branch information
crew852 committed Aug 27, 2024
1 parent e91bc63 commit 49d03a1
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 22 deletions.
7 changes: 2 additions & 5 deletions app/components/KakaoLoginButton/KakaoLoginButton.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
import React, { useMemo } from 'react';
import { v4 as uuidv4 } from 'uuid';
import getUUID from '@/utils/getUUID';

const clientId = 'f5aa2f20e42d783654b8e8c01bfc6312';
//redirectUri는 등록된 redirectUri중에 임의로 사용했습니다.
const redirectUri = 'http://localhost:5173/oauth/kakao';

//이용자의 uuid를 받아와 state값으로 사용합니다.
const getUserUUID = (): string => uuidv4();

const KakaoLoginButton: React.FC = () => {
const kakaoAuthUrl = useMemo(() => {
const userUUID = getUserUUID();
const userUUID = getUUID();
return `https://kauth.kakao.com/oauth/authorize?client_id=${clientId}&redirect_uri=${redirectUri}&response_type=code&state=${userUUID}`;
}, []);

Expand Down
33 changes: 16 additions & 17 deletions app/routes/oauth.kakao.tsx.tsx
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
//HTTP 요청을 보내기 위해 axios라이브러리를 추가했습니다.
import { ActionFunction, json } from '@remix-run/cloudflare';
import { LoaderFunction, json } from '@remix-run/cloudflare';
import { useSearchParams } from '@remix-run/react';
import axios, { AxiosError } from 'axios';
import { useEffect } from 'react';

export const action: ActionFunction = async ({ request }) => {
//request.formData()를 통해 요청에서 전송된 폼 데이터를 가져옵니다.
const formData = await request.formData();
const code = formData.get('code');
const state = formData.get('state');
export const loader: LoaderFunction = async ({ request }) => {
const url = new URL(request.url);
const code = url.searchParams.get('code');
const state = url.searchParams.get('state');

/*
code와 state 값을 추출하여 axios.post를 사용해 백엔드 서버에 요청을 보냅니다.
요청 성공 시 성공 메시지와 반환된 데이터를 JSON 형태로 반환합니다.
요청 실패 시 오류 메시지를 JSON 형태로 반환하고 콘솔에 오류를 출력합니다.
*/
/**
* code와 state 값을 추출하여 axios.post를 사용해 백엔드 서버에 요청을 보냅니다.
* 요청 성공 시 성공 메시지와 반환된 데이터를 JSON 형태로 반환합니다.
* 요청 실패 시 오류 메시지를 JSON 형태로 반환하고 콘솔에 오류를 출력합니다.
*/
try {
//추후에 진짜 백엔드 api url로 변경예정입니다.
const response = await axios.post('(백엔드api url)', {
Expand All @@ -29,12 +28,12 @@ export const action: ActionFunction = async ({ request }) => {
}
};

/*
KakaoRedirect 함수는 카카오 로그인 후 리다이렉트된 페이지에서 실행되는 컴포넌트입니다.
useSearchParams 훅을 사용해 URL 쿼리 파라미터를 가져옵니다.
useEffect 훅을 사용해 컴포넌트가 마운트될 때 실행되는 코드를 작성합니다.
sendCodeToServer 함수는 쿼리 파라미터에서 code와 state를 추출하고, 이 값을 FormData 객체에 추가한 후, /oauth/kakao 엔드포인트로 POST 요청을 보냅니다.
*/
/**
* @constructor KakaoRedirect 함수는 카카오 로그인 후 리다이렉트된 페이지에서 실행되는 컴포넌트입니다.
* @useSearchParams 훅을 사용해 URL 쿼리 파라미터를 가져옵니다.
* @useEffect 훅을 사용해 컴포넌트가 마운트될 때 실행되는 코드를 작성합니다.
* @sendCodeToServer 쿼리 파라미터에서 code와 state를 추출하고, 이 값을 url.searchParams 객체에 추가한 후, /oauth/kakao 엔드포인트로 POST 요청을 보냅니다.
*/
const KakaoRedirect = () => {
const [searchParams] = useSearchParams();

Expand Down
9 changes: 9 additions & 0 deletions app/utils/getUUID.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { v4 as uuidv4 } from 'uuid';

//이용자의 uuid를 받아옵니다.
const getUUID = () => {
const getUserUUID = (): string => uuidv4();
return getUserUUID;
};

export default getUUID;

0 comments on commit 49d03a1

Please sign in to comment.