๐Ÿ”ฅ Firebase๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž

Yeonnยท2024๋…„ 11์›” 8์ผ
0

Backend ๐Ÿ‘€

๋ชฉ๋ก ๋ณด๊ธฐ
6/10
post-thumbnail

๐Ÿ”ฅย ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ

๐ŸŒฑ Firebase

๊ตฌ๊ธ€ ์• ๋„๋ฆฌํ‹ฑ์Šค: ์›น ์‚ฌ์ดํŠธ์™€ ์•ฑ์˜ ๋ฐฉ๋ฌธ์ž ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•ด์ฃผ๋Š” ๋„๊ตฌ

๐Ÿ”ฅย ํ”„๋กœ์ ํŠธ ์„ค์ •ํ•˜๊ธฐ

  • ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ์„ค์ •์„ ์œ„ํ•ด ์›น ์•„์ด์ฝ˜ ํด๋ฆญ

  • ์‹ค์ œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„ ์ž‘์„ฑ ํ›„ ์•ฑ ๋“ฑ๋ก

  • Firebase SDK๋ฅผ ์›น ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•ด์•ผ ์ •์ƒ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • script ํƒœ๊ทธ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜๋„ ์žˆ์œผ๋‚˜, ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” npm ๋ชจ๋“ˆ ๊ถŒ์žฅ

  • ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ํ›„ firebase ๊ฐ€์ด๋“œ์— ๋”ฐ๋ผ npm install firebase ์„ค์น˜
    • src > config ์— firebase.ts ํŒŒ์ผ ์ƒ์„ฑ

    • firebase ๊ฐ€์ด๋“œ ๋ฌธ์„œ์—์„œ ์ œ๊ณตํ•˜๋Š” SDK ์„ค์น˜๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ ์ž‘์„ฑ

      // Import the functions you need from the SDKs you need
      import { initializeApp } from "firebase/app";
      // TODO: Add SDKs for Firebase products that you want to use
      // https://firebase.google.com/docs/web/setup#available-libraries
      
      // Your web app's Firebase configuration
      const firebaseConfig = {
        apiKey: "AIzaSyA_ilIgb0mq6Q1N9PTR_MDJVWahIDv4p-c",
        authDomain: "dddd-56373.firebaseapp.com",
        projectId: "dddd-56373",
        storageBucket: "dddd-56373.firebasestorage.app",
        messagingSenderId: "834978236240",
        appId: "1:834978236240:web:e639c74430e9a4ae998e55"
      };
      
      // Initialize Firebase
      const app = initializeApp(firebaseConfig);
  • index.tsx ํŒŒ์ผ ๋‚ด์—์„œ app ๊ฐ์ฒด๋ฅผ ๋ถˆ๋Ÿฌ์™€ App ์ปดํฌ๋„ŒํŠธ์— prop ์ „๋‹ฌ
  • .env ์ž‘์„ฑ
    REACT_APP_API_KEY= 
    REACT_APP_AUTH_DOMAIN=
    REACT_APP_PROJECT_ID=
    REACT_APP_STORAGE_BUCKET=
    REACT_APP_MESSAGING_SENDER_ID=
    REACT_APP_APP_ID=
  • src > config > firebaseConfig.ts ์ž‘์„ฑ
    import { initializeApp } from 'firebase/app';
    import { getFirestore } from 'firebase/firestore';
    
    const firebaseConfig = {
        apiKey: process.env.REACT_APP_API_KEY,
        authDomain: process.env.REACT_APP_AUTH_DOMAIN,
        projectId: process.env.REACT_APP_PROJECT_ID,
        storageBucket: process.env.REACT_APP_STORAGE_BUCKET,
        messagingSenderId: process.env.REACT_APP_MESSAGING_SENDER_ID,
        appId: process.env.REACT_APP_APP_ID,
    };
    
    export const app = initializeApp(firebaseConfig);
    export const db = getFirestore(app);
    

โ—๏ธย ์ธ์ฆ( Authentication ) / ์ธ๊ฐ€( Authorization )

Authentication( ์ธ์ฆ )Authorization( ์ธ๊ฐ€ )
์ •์˜์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์‚ฌ์šฉ์ž๊ฐ€ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ณผ์ •
๋ชฉ์ ์‚ฌ์šฉ์ž์˜ ์‹ ์›์„ ํ™•์ธ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์„ ๋ถ€์—ฌ ๋ฐ ์ œํ•œ
์‹œ์ ๋กœ๊ทธ์ธ ๋˜๋Š” ์ ‘๊ทผ ์‹œ ์ฒ˜์Œ ๋ฐœ์ƒ์ธ์ฆ ํ›„ ๋ฐœ์ƒ
์˜ˆ์‹œ๋กœ๊ทธ์ธํŠน์ • ๋ ˆ๋ฒจ/์ž๊ฒฉ์— ๋„๋‹ฌํ•œ ์œ ์ €๋งŒ ํŠน์ • ์ฝ˜ํ…์ธ  ์ด์šฉ ๊ฐ€๋Šฅ

๐Ÿ”ฅย Firebase Authentication ์„ค์ •

  • ๋กœ๊ทธ์ธ ๋ฐฉ๋ฒ• ํƒญ์—์„œ ์ถ”๊ฐ€ ์ œ๊ณต์—…์ฒด๋ฅผ ์„ ํƒํ•˜์—ฌ ์†Œ์…œ ๋กœ๊ทธ์ธ ๋ฐฉ๋ฒ• ์„ ํƒ

  • ์‚ฌ์šฉ ์„ค์ • ํ† ๊ธ€ โ†’ ON
  • ํ”„๋กœ์ ํŠธ ์ง€์› ์ด๋ฉ”์ผ ์ž‘์„ฑ

  • ๋กœ๊ทธ์ธ ์ œ๊ณต์—…์ฒด ๋ชฉ๋ก์— ์„ ํƒํ•œ ์†Œ์…œ์ด ์‚ฌ์šฉ ์„ค์ •๋˜์žˆ๋‹ค๋ฉด ์™„๋ฃŒ !

๐Ÿ”ฅย firebase ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ •ํ•˜๊ธฐ

  • Cloud Firestore ํด๋ฆญ
  • database ๋งŒ๋“ค๊ธฐ

  • ์œ„์น˜๋ฅผ asia-northeast3( Seoul )๋กœ ์„ค์ •
    • ์œ„์น˜๊ฐ€ ๋„ˆ๋ฌด ๋จผ ๊ณณ์ด๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ ‘๊ทผํ•  ๋•Œ ๋„คํŠธ์›Œํฌ ์ง€์—ฐ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณด์•ˆ ๊ทœ์น™ ์„ค์ •
    • ํ”„๋กœ๋•์…˜ ๋ชจ๋“œ: ์‹ค์ œ ์šด์˜ ํ™˜๊ฒฝ
    • ํ…Œ์ŠคํŠธ ๋ชจ๋“œ: ๊ฐœ๋ฐœ ๋ชฉ์ ์ด๋‚˜ ์—ฐ์Šต ๋ชฉ์  !

๐Ÿ”ฅย ์ƒˆ ์ปฌ๋ ‰์…˜ ๋งŒ๋“ค๊ธฐ

  • ์ปฌ๋ ‰์…˜ ์‹œ์ž‘ํ•˜๊ธฐ

  • ์ปฌ๋ ‰์…˜์€ ๋ฐ˜๋“œ์‹œ 1๊ฐœ์˜ ๋ฌธ์„œ๋ฅผ ํฌํ•จํ•ด์•ผ ์ €์žฅ ๊ฐ€๋Šฅ

  • ์ž๋™ ID๋ฅผ ์„ ํƒ: ์ž๋™ ID๋ฅผ ํ• ๋‹น ๋ฐ›์€ ๋ฌธ์„œ ์ƒ์„ฑ
    • ๋ฌธ์„œ ๋‚ด โ€˜ํ•„๋“œ ์ถ”๊ฐ€โ€™ ๋ฒ„ํŠผ์œผ๋กœ ๊ฐ’์„ ์„ค์ •ํ•˜์—ฌ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ

0๊ฐœ์˜ ๋Œ“๊ธ€