Firebase_react

Firebase with React react์—์„œ firebase๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• firebase SDK๋ฅผ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ์›น์ƒ์—์„œ ์„ค์น˜์—†์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ firebase ๊ธฐ๋ณธ์„ ์ฐธ์กฐ ์ธ์ฆ (Auth) firebase ๋กœ ๊ณ„์ • ์ƒ์„ฑ ๋ฐ ๋กœ๊ทธ์ธ firebase API๋ฅผ importํ•˜์—ฌ ์‚ฌ์šฉ <AppFirebase.js> import firebase from "firebase/compat/app"; import "firebase/compat/auth"; const firebaseConfig = { apiKey: process.env.REACT_APP_API_KEY, authDomain: process.env.REACT_APP_AUTHDOMAIN, projectId: process.env.REACT_APP_PROJECTID, storageBucket: process.env.REACT_APP_STORAGEBUCKET, messagingSenderId: process.env.REACT_APP_MESSAGINGSENDERID, appId: process.env.REACT_APP_APPID }; export default firebase.initializeApp(firebaseConfig); export const authService = firebase.auth(); AppFirebase.js ๋ฅผ ํ™œ์šฉํ•˜์—ฌ business logic์— ํ•„์š”ํ•œ ๋กœ๊ทธ์ธ / ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ <Auth.js> import { authService } from "../components/AppFirebase"; const data = await authService.createUserWithEmailAndPassword(email, password) // email, passwd๋กœ ๊ณ„์ • ์ƒ์„ฑ const data = await authService.signInWithEmailAndPassword(email, password) // email, passwd๋กœ ๋กœ๊ทธ์ธ createUserWithEmailAndPassword / signInWithEmailAndPassword ์‹คํ–‰ ์ดํ›„ authService.currentUser๋ฅผ ์ฐธ์กฐํ•˜๋ฉด user ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ, authService.currentUser ์ •๋ณด๋ฅผ ๊ฐฑ์‹ ํ•˜๋Š”๋ฐ๋Š” ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค. firebase API์—์„œ๋Š” observer๋ฅผ ๋“ฑ๋กํ•˜์—ฌ currentUser์˜ ๋ณ€๊ฒฝ ์‹œ์ ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. currentUser ๋ณ€๊ฒฝ์‹œ์ ์— ํŠน์ •ํ•จ์ˆ˜ ๋™์ž‘ user ์ •๋ณด๊ฐ€ ๊ฐฑ์‹ ๋œ ์‹œ์ ์— ํŠน์ • ๋™์ž‘์„ ์›ํ•œ๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด onAuthStateChanged ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. authService.onAuthStateChanged((user) => { /* something to do */ }}); ๋กœ๊ทธ์•„์›ƒ authService.signOut() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋กœ๊ทธ์•„์›ƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฐธ๊ณ ๋กœ ํฌ๋กฌ ์›น ๋””๋ฒ„๊น… ํ™”๋ฉด์—์„œ โ€˜Applicationโ€™ํƒญ์— ๋“ค์–ด๊ฐ€์„œ IndexedDB -> firebaseLocalDb ์•ˆ์˜ ๋‚ด์šฉ์„ ๐Ÿšซ๋ฒ„ํŠผ์œผ๋กœ ์‚ญ์ œํ•ด ์ฃผ๋ฉด ๋กœ๊ทธ์ธ ์ •๋ณด๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค. ์—๋Ÿฌ authService์˜ ํ•จ์ˆ˜(createUserWithEmailAndPassword, signInWithEmailAndPassword, โ€ฆ) ์‚ฌ์šฉ์‹œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, try, catch๋ฌธ์œผ๋กœ ๋ฌถ์–ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. try { let data data = await authService.createUserWithEmailAndPassword(email, password) } catch(error) { console.log(error.code) // ์—๋Ÿฌ์˜ ์›์ธ์ด ์ฝ”๋“œ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ๋œ๋‹ค. console.log(error.message) // ์—๋Ÿฌ์˜ ์›์ธ์ด ๋ฉ”์‹œ์ง€ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ๋œ๋‹ค. } ref) ์˜ค๋ฅ˜๋ฐœ์ƒ ์›์ธ ...

<span title='2022-02-12 19:32:34 +0900 KST'>February 12, 2022</span>&nbsp;ยท&nbsp;2 min&nbsp;ยท&nbsp;AswinBlue

Firebase

firebase firebase๋Š” ์‹ค์‹œ๊ฐ„ db๋กœ ์œ ๋ช…ํ•˜๋ฉฐ, google์— ์ธ์ˆ˜๋˜๊ณ  ํญ์ด ๋„“์–ด์กŒ๋‹ค. Amazon์˜ Amplify๊ฐ€ firebase์™€ ์œ ์‚ฌํ•˜๋‹ค. ์ผ์ • ์‚ฌ์šฉ๋Ÿ‰ ๊นŒ์ง€๋Š” ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ดํ›„์—๋Š” ์š”๊ธˆ์ด ๋ถ€๊ฐ€๋œ๋‹ค. ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ ์˜จ๋ผ์ธ์œผ๋กœ ์ฝ˜์†”์— ์ ‘์†ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑ ๋ฐ ์„ค์ •ํ•˜๊ณ , firebase sdk๋ฅผ ๋กœ์ปฌ์— ๋‹ค์šด๋ฐ›์•„ ์ฝ”๋“œ์— ์ ์šฉํ•œ๋‹ค. firebase๋Š” ๋‹ค์–‘ํ•œ ์šด์˜์ฒด์ œ์— ์„ค์น˜ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ฐ๊ฐ์˜ ์„ค์น˜ ๋ฐฉ๋ฒ•์„ ๋”ฐ๋ฅด๋ฉด ๋œ๋‹ค. (์›น์—์„œ๋Š” ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ  url๋กœ ์ฐธ์กฐํ•ด ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.) ๋ฒ„์ „์ด ์˜ฌ๋ผ๊ฐ์— ๋”ฐ๋ผ ์ฐธ์กฐ๋ฐฉ๋ฒ•, ์ธํ„ฐํŽ˜์ด์Šค ๋“ฑ ์‚ฌ์šฉ๋ฒ•์ด ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋‹ˆ ํ•ญ์ƒ docs๋ฅผ ์ž˜ ์‚ดํŽด๋ณด์ž ...

<span title='2022-01-19 21:02:46 +0900 KST'>January 19, 2022</span>&nbsp;ยท&nbsp;2 min&nbsp;ยท&nbsp;AswinBlue