반응형
짜잔 부트스트랩을 한땀한땀 수정해서 만든 회원가입페이지이다.
드디어 조금 웹사이트같아졌다ㅎㅎ
요렇게 마우스를 올리면 노랑이로 바뀐다.
네이버 간편로그인도 연결해야하는데 카카오부터 ...하하
Node.js(백엔드 부분)
const express = require('express');
const axios = require('axios');
1. Express와 axios 모듈을 import한다.
const app = express();
const port = 3000;
2. Express 애플리케이션을 생성하고 포트 번호를 설정한다.
const KAKAO_OAUTH_TOKEN_API_URL = "https://kauth.kakao.com/oauth/token";
const KAKAO_USER_PROFILE_API_URL = "https://kapi.kakao.com/v2/user/me";
const KAKAO_CLIENT_ID = "rest api 키"; // 카카오 개발자 사이트에서 발급받은 클라이언트 ID
const KAKAO_REDIRECT_URL = "http://localhost:3000/auth/kakao/callback"; // 카카오에 설정한 리디렉션 URI
3. 카카오 OAuth 인증 및 프로필 정보 요청에 필요한 URL과 클라이언트 ID, 리디렉션 URI를 설정한다.
app.get('/auth/kakao', (req, res) => {
const authURL = `${KAKAO_OAUTH_TOKEN_API_URL}?client_id=${KAKAO_CLIENT_ID}&redirect_uri=${KAKAO_REDIRECT_URL}&response_type=code`;
res.redirect(authURL);
});
반응형
4. '/auth/kakao' 엔드포인트에서 카카오 로그인 요청을 처리한다.
사용자가 '/auth/kakao' 엔드포인트에 접속하면, 위에서 설정한 인증 URL로 리디렉션된다.
app.get('/auth/kakao/callback', async (req, res) => {
const code = req.query.code;
try {
const tokenResponse = await axios.post(KAKAO_OAUTH_TOKEN_API_URL, null, {
params: {
grant_type: "authorization_code",
client_id: KAKAO_CLIENT_ID,
redirect_uri: KAKAO_REDIRECT_URL,
code,
},
});
const accessToken = tokenResponse.data.access_token;
const userResponse = await axios.get(KAKAO_USER_PROFILE_API_URL, {
headers: {
Authorization: `Bearer ${accessToken}`,
},
});
const userInfo = userResponse.data;
// 여기서 userInfo를 활용하여 사용자 인증 및 로그인 처리를 수행
res.json(userInfo);
} catch (error) {
console.error(error);
res.status(500).json({ error: "Internal Server Error" });
}
});
5. '/auth/kakao/callback' 엔드포인트에서 액세스 토큰 요청과 사용자 프로필 정보 요청을 처리한다.
'/auth/kakao/callback' 엔드포인트는 카카오에서 전달받은 인증 코드(code)를 사용하여 액세스 토큰을 얻고, 그 토큰으로 사용자 프로필 정보를 요청한다. 이때 받은 사용자 정보(userInfo)를 활용하여 사용자 인증 및 로그인 처리 등을 수행할 수 있다.
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
6. 서버를 실행하고 지정된 포트 번호에서 들어오는 연결을 수신 대기한다.
카카오 버튼을 클릭하면 이런 화면으로 전환이 된다~!
내일은 네이버로그인 가즈아~!
반응형
'Project > final' 카테고리의 다른 글
[9.18(월) 북스탁 프로젝트] 네이버 소셜로그인 구현 | 네이버 간편로그인API연결하기(node.js) (0) | 2023.09.20 |
---|---|
[9.16(토) 북스탁 프로젝트] 2차 멘토링 대대성공!! 칭찬일색 ~ 피드백 100% 수용했다! (0) | 2023.09.19 |
[9.14(목) 북스탁 프로젝트] 도서 검색결과 페이지를 만들어보자 ~! (0) | 2023.09.14 |
[9.13(수) 북스탁 프로젝트] 로그인 상태관리 | useAuth, AuthContext, AuthProvider, (0) | 2023.09.13 |
[9.6(수) 북스탁 프로젝트 일지] 팀원의 하차, 메인페이지 목업제작, '역경매'에 포커스, 핵심을 잊지말자!! (0) | 2023.09.06 |