백앤드 서버 없이 간단하게 로그인을 구현 하고 싶어 firebase를 사용하였다. 다양한 로그인 방식을 지원 하는데 그 중에서 구글 로그인 방식을 사용하였다. firebase 콘솔 설정 방법과 코드 적용 방법에 대해서 이야기 하겠다.
프로젝트 추가 클릭

프로젝트 이름 지정

애널리틱스 설정

웹 아이콘 클릭

앱 닉네임 입력 후, 앱 등록 버튼 클릭

npm 사용 선택 → SDK 코드 복사

// Import the functions you need from the SDKs you need
import { initializeApp } from 'firebase/app';
// import { getAnalytics } from "firebase/analytics";
import 'firebase/auth';
// 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
// For Firebase JS SDK v7.20.0 and later, measurementId is optional
const firebaseConfig = {
	apiKey: `${process.env.NEXT_PUBLIC_FIREBASE_API_KEY}`,
	authDomain: 'react-disney-app-43d60.firebaseapp.com',
	projectId: 'react-disney-app-43d60',
	storageBucket: 'react-disney-app-43d60.appspot.com',
	messagingSenderId: '280606126806',
	appId: '1:280606126806:web:adc2a31ee1adeebdc6cf77',
	measurementId: 'G-7P8NZMBCRH',
};
// Initialize Firebase
const app = initializeApp(firebaseConfig);
// const analytics = getAnalytics(app);
export default app;
참여 > Authentication 클릭

Sign-in-method 탭 > Google 클릭

사용 설정 스위치 활성화 후, 이메일 선택 후 저장 버튼 클릭

구글 로그인 추가 확인

자세한 코드는 여기 를 확인 바란다.
//1. sdk 설정 파일 불러오기
import app from '@/firebase';
import { getAuth, GoogleAuthProvider, onAuthStateChanged, signInWithPopup, signOut } from 'firebase/auth';
//3. auth, provider 할당
const auth = getAuth(app);
const provider = new GoogleAuthProvider();
const handleAuth = useCallback((e: React.MouseEvent<HTMLElement>) => {
		e.preventDefault();
		signInWithPopup(auth, provider)
			.then(result => {
				//4. 로그인 성공 했을 경우 코드 작성
				//4-1. user 정보는 result.user로 받아 올 수 있음.
				const user = result.user;
				// dispatch(setUser(user));
				dispatch(setLoggedIn(true));
				setCookie('uid', user.uid, 1);
				user.photoURL && setPhotoUrl(user.photoURL);
			})
			.catch(error => {
				//5. 로그인 실패 했을 경우 코드 작성
				alert(`잠시후 다시 시도해 주세요.\n${error.message}`);
				console.log(error);
			});
	}, []);
const handleLogout = useCallback(() => {
		signOut(auth)
			.then(() => {
				// dispatch(setUser({}));
				dispatch(setLoggedIn(false));
				delCookie('uid');
				setPhotoUrl('');
			})
			.catch(error => {
				console.log(error);
			});
	}, []);
useEffect(() => {
		onAuthStateChanged(auth, user => {
			//1. user가 있을 경우, 로그인한 상태 
			if (user) {
				//2. 로그인 한 상태 일 경우 코드 작성
				// dispatch(setUser(user));
				dispatch(setLoggedIn(true));
				const photourl = user.photoURL;
				photourl && setPhotoUrl(photourl);
				setCookie('uid', user.uid, 1);
			}
		});
	}, [auth]);
안녕하세요 저도 리액트로 디즈니 플러스 앱 만들었고
firebase로그인 연동 관련해서 정말 너무너무 궁금하고 해결하고 싶은데, 혹시 제 코드 보고 뭐가 문제인지 피드백 가능하실까요? 정말 간절합니다..