Backend ๐Ÿ“š 30

[Node, React]Instagram Clone - 16. ์นด์นด์˜คํ†ก ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ตฌํ˜„..์„ ๋น™์žํ•œ ์นด์นด์˜ค OAuth2 ์ธ์ฆ ๋ฏธ๋“ค์›จ์–ด ๊ตฌํ˜„

์—ฌํƒœ ํ•œ ๊ฒƒ ์ค‘์— ์ œ์ผ ์–ด๋ ค์› ๋‹ค.. ์นด์นด์˜คํ†ก ๋กœ๊ทธ์ธ ์ž์ฒด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€ ์•Š์•˜๋Š”๋ฐ ๊ธฐ์กด์˜ ๋กœ๊ทธ์ธ ํ™•์ธ ๋กœ์ง(๋‚œ ์ฟ ํ‚ค๋กœ ๋„˜๊ฒจ์„œ ๊ด€๋ฆฌํ•จ)์ด๋ž‘ ์นด์นด์˜ค ๋กœ๊ทธ์ธ ํ™•์ธ ๋กœ์ง์„ ํ†ตํ•ฉํ•˜๋Š” ๋ฐ ์• ๋ฅผ ๋จน์—ˆ๋‹ค. ์นดํ†ก ๋กœ๊ทธ์ธ ๊ตฌํ˜„์— ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์ด 1์‹œ๊ฐ„์ด๋ผ๋ฉด ๋กœ๊ทธ์ธ ํ™•์ธ ๋กœ์ง ํ†ตํ•ฉ์€ ์ฒด๊ฐ 12์‹œ๊ฐ„ ๊ฑธ๋ฆฐ ๋Š๋‚Œ.. ์•„๋ฌดํŠผ ์ด๊ฑด ๊ธฐ๋กํ•˜์ง€ ์•Š์œผ๋ฉด ๋‘๊ณ ๋‘๊ณ  ํ›„ํšŒํ•  ๊ฒƒ ๊ฐ™์•„์„œ ์˜ค๋žœ๋งŒ์— ํฌ์ŠคํŒ…์„ ํ•ด๋ณธ๋‹ค. ๊ฑฐ๋‘์ ˆ๋ฏธํ•˜๊ณ  ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ๋‹ค.1. ์นด์นด์˜ค ๋กœ๊ทธ์ธ ๊ตฌํ˜„Kakao Developers ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ๋กœ๊ทธ์ธ๊นŒ์ง€ ์–ด๋ ต์ง€ ์•Š๊ฒŒ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.(์ฐจ๊ทผ์ฐจ๊ทผ ํ•˜๋ฉด ๋)1) ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ(Kakao.jsx)import React, { useEffect } from "react";import { useNavigate } from "reac..

[Node]Instagram Clone - 15. ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ ์ผ๋ฐ˜ ์œ ์ € ์‚ญ์ œ API

1. ๊ด€๋ฆฌ์ž๊ฐ€ ์ผ๋ฐ˜ ์œ ์ €๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” API์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ด€๋ฆฌ์ž๊ฐ€ ์ผ๋ฐ˜ ์œ ์ €๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” API ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•จ.์ผ๋ฐ˜ ์œ ์ €๋Š” ์ž์‹ ์˜ ๊ณ„์ •๋งŒ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ด€๋ฆฌ์ž๋Š” ์ „์ฒด ์‹œ์Šคํ…œ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ๋‹ค๋ฅธ ์œ ์ €๋“ค์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Œ์ด ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๊ด€๋ฆฌ์ž๋งŒ์ด ์œ ์ € ๊ด€๋ฆฌ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ฉฐ, ์œ ์ € ์‚ญ์ œ ์‹œ ํ•ด๋‹น ์œ ์ €์˜ ๋ชจ๋“  ์ •๋ณด์™€ ๋ฐ์ดํ„ฐ๋„ ํ•จ๊ป˜ ์‚ญ์ œ๋˜๊ฒŒ๋” ๊ตฌํ˜„ํ•จ.1) ๊ด€๋ฆฌ์ž ์œ ์ € ์‚ญ์ œ API ์„ค์ • (adminDeleteUser.js)adminDeleteUser.js ํŒŒ์ผ: ๊ด€๋ฆฌ์ž๊ฐ€ ํŠน์ • ์œ ์ €๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„๊ด€๋ฆฌ์ž๋Š” admin ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๋งŒ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์œ ์ €๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋™์‹œ์— ํ•ด๋‹น ์œ ์ €์™€ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•จ. ..

[Node]Instagram Clone - 14. ๊ด€๋ฆฌ์ž ํšŒ์›๊ฐ€์ž… API

1. ๊ด€๋ฆฌ์ž ํšŒ์›๊ฐ€์ž… API์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ด€๋ฆฌ์ž ํšŒ์›๊ฐ€์ž… API ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•จ.์ดˆ๋Œ€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ํŠน์ • ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ๊ฐ€์ž…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์œผ๋ฉฐ, ๊ฐ€์ž… ์‹œ ์ด๋ฉ”์ผ ์ธ์ฆ ๊ธฐ๋Šฅ๋„ ํ•จ๊ป˜ ์ œ๊ณต๋จ.1) ๊ด€๋ฆฌ์ž ํšŒ์›๊ฐ€์ž… API ์„ค์ • (adminSignup.js)adminSignup.js ํŒŒ์ผ์—์„œ๋Š” ์ดˆ๋Œ€ ์ฝ”๋“œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ฒฝ์šฐ์—๋งŒ ๊ด€๋ฆฌ์ž๋กœ ํšŒ์›๊ฐ€์ž…์ด ์ง„ํ–‰๋˜๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Œ๋˜ํ•œ ์ด๋ฉ”์ผ ์ธ์ฆ ์ ˆ์ฐจ๋ฅผ ํฌํ•จํ•ด, ์ธ์ฆ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ ์ด๋ฉ”์ผ์„ ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜์‹ ํ•˜๋„๋ก ํ–ˆ์Œ(๊ธฐ์กด์˜ ํšŒ์›๊ฐ€์ž…๊ณผ ๋™์ผ)const express = require("express");const router = express.Router();const { User } = require("../../models/User");const cr..

[Node]Instagram Clone - 13. Socket.io๋ฅผ ํ™œ์šฉํ•œ ๋Œ“๊ธ€ ๋ฐ ๊ฒŒ์‹œ๋ฌผ ์ข‹์•„์š” ์•Œ๋ฆผ ๊ธฐ๋Šฅ ๊ตฌํ˜„

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Socket.IO๋ฅผ ์‚ฌ์šฉํ•ด ๊ฒŒ์‹œ๋ฌผ๊ณผ ๋Œ“๊ธ€์— ์ข‹์•„์š”๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•จ.ํด๋ผ์ด์–ธํŠธ๋Š” ์ฆ‰์‹œ ์ข‹์•„์š”๊ฐ€ ๋ฐ˜์˜๋œ ์ •๋ณด๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ.1. ์„œ๋ฒ„ ์ฝ”๋“œ1) ๊ธฐ์กด์˜ server.js ์ˆ˜์ •์„œ๋ฒ„์—์„œ Socket.IO๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์™€์˜ ์—ฐ๊ฒฐ์„ ๊ด€๋ฆฌ.์ข‹์•„์š”๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด like-post์™€ like-comment ์ด๋ฒคํŠธ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.// server.js const socketIo = require("socket.io"); let io; function initSocket(server) { io = socketIo(server); io.on("connection", (socket) => { console.log("A user connected"); socket..

[Node]Instagram Clone - 12. Socket.io๋ฅผ ํ™œ์šฉํ•œ ์ƒˆ๋กœ์šด ๋Œ“๊ธ€ ๋“ฑ๋ก ์•Œ๋ฆผ ๊ธฐ๋Šฅ ๊ตฌํ˜„

Socket.IO๋ฅผ ์‚ฌ์šฉํ•ด ์ƒˆ๋กœ์šด ๋Œ“๊ธ€ ์•Œ๋ฆผ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•จ.ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋Œ“๊ธ€์„ ๋‚จ๊ธธ ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„์—์„œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋ฅผ ํ†ตํ•ด ๊ฒŒ์‹œ๋ฌผ์— ๋Œ“๊ธ€์ด ์ถ”๊ฐ€๋  ๋•Œ๋งˆ๋‹ค ๊ด€๋ จ ์ •๋ณด๊ฐ€ ์ „์†ก๋˜์–ด ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Œ1. ์„œ๋ฒ„ ์ฝ”๋“œ1) server.js ์„ค์ •์„œ๋ฒ„์—์„œ Socket.IO๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํŒŒ์ผ์„ ๊ตฌ์„ฑํ•จ// server.jsconst socketIo = require("socket.io");let io;function initSocket(server) { io = socketIo(server); io.on("connection", (socket) => { console.log("A user connected"); socket.on("discon..