-
Firebase v9로 이메일 로그인, 회원가입 기능 구현하기TIL/멋쟁이사자처럼 FE스쿨 2기 2022. 7. 4. 17:07SMALL
최근에 파이어베이스가 v9로 업데이트하면서 문법이 많~이 바뀌었다고 한다.
그래서 새로 업데이트된 버전으로 로그인, 회원가입 기능을 구현해보는 시간을 가졌다.
파일 트리 [과정 개요]
- cra 생성, npm i firebase
- 파이어베이스 홈페이지에서 프로젝트 생성
- 콘솔에서 앱 등록
- firebase SDK 복붙
- src폴더에서 fBase.js생성
- app.js에서 fBase.js에서 생성한 authService 임포트 후 authService.currentUser 값을 useState를 이용해 isLogin에 할당
- env 파일 생성하여 환경변수 설정 후 fBase.js에서 process.env 붙여서 값 숨기기
- Router.js(HashRouter import), Auth.js, Main.js 생성 후 Router.js에서 Auth와 Main 라우터 설정(로그인 안한경우 전자, 한 경우 후자로 라우팅되도록)
- 파이어베이스 콘솔에서 이메일로 로그인 설정
- Auth.js에서 로그인 폼 추가
- input 값이 변경될 때마다 onchange 함수 호출
- createUserWithEmailAndPassword 함수를 이용하여 이메일과 패스워드를 입력하여 계정을 생성
- onAuthStateChanged(비동기 callback 함수) 사용자 로그인 상태의 변화를 관찰하는 메소드를 추가
(로그아웃, 계정 생성시에도 트리거가 되고 Firebase 초기화 될 때에도 실행하기 위해서)
initializseApp import후 firebaseConfig 설정 app을 콘솔에 찍어보면
다음과 같이 잘 나오는 것을 확인할 수 있다.
전체 파일 코드
components>App.js components>Router.js import React, { useState } from "react"; import { getAuth, createUserWithEmailAndPassword, signInWithEmailAndPassword } from "firebase/auth"; const Auth = () => { const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [newAccount, setNewAccount] = useState(true); const onChange = (event) => { const inputData = { type: event.target.type, value: event.target.value } if (inputData.type === 'email') { setEmail(inputData.value); } else if (inputData.type === 'password') { setPassword(inputData.value); } } const onSubmit = (event) => { event.preventDefault(); const auth = getAuth(); // let user; try { if (newAccount) { createUserWithEmailAndPassword(auth, email, password).then((userCredential) => { console.log(userCredential.user); }) } else { signInWithEmailAndPassword(auth, email, password).then((userCredential) => { console.log(userCredential.user); }) } } catch (error) { } } return ( <> <h2>로그인 페이지입니다.</h2> <form onSubmit={onSubmit}> <div> <label>이메일 : </label> <input type="email" required value={email} onChange={onChange}></input> </div> <div> <label>비밀번호 : </label> <input type="password" required value={password} onChange={onChange}></input> </div> <button type="submit">{newAccount ? '회원가입' : '로그인'}</button> </form> </> ) } export default Auth;
routes>Auth.js
import React from "react"; const Main=()=> <h2>메인 페이지입니다 환영합니다~</h2> export default Main;
routes>Main.js
src>fBase.js **참고해야하는 사이트
https://console.firebase.google.com/u/0/
로그인 - Google 계정
이메일 또는 휴대전화
accounts.google.com
https://firebase.google.com/docs/auth/web/password-auth?hl=ko#web-version-9
자바스크립트를 사용하여 비밀번호 기반 계정으로 Firebase에 인증하기 | Firebase Documentation
의견 보내기 자바스크립트를 사용하여 비밀번호 기반 계정으로 Firebase에 인증하기 Firebase 인증을 사용하여 사용자가 이메일 주소와 비밀번호로 Firebase에 인증하도록 하고, 앱의 비밀번호 기반
firebase.google.com
반응형'TIL > 멋쟁이사자처럼 FE스쿨 2기' 카테고리의 다른 글
[Day 40] 알고리즘- 몸풀기 & 스택 (0) 2022.05.26 [Day 35] JS 클로저 활용 & Class (0) 2022.05.18 [Day 34] JS 객체지향프로그래밍; 생성자함수, 프로토타입, 객체 상속 (0) 2022.05.17 [Day 33] JS 로 만드는 3D 캐러셀 (0) 2022.05.17 [Day 31] JS DOM & 이벤트 (0) 2022.05.12