This tutorial will help you set up user authentication in a React app using Firebase Authentication (Google Sign-In & Email/Password Login).
Steps to Set Up Firebase Authentication
1. Create a Firebase Project
- Go to Firebase Console.
- Click “Add Project”, give it a name, and complete setup.
- Navigate to Project Settings > General > Your Apps.
- Click “Add app” → Select “Web” → Register App.
- Copy your Firebase config (you’ll use it in step 3).
- Enable Authentication:
- Go to Authentication > Sign-in method.
- Enable Google Sign-In and Email/Password.
2. Install Firebase in React
Run this in your project folder:
npm install firebase
3. Configure Firebase in React (src/firebase.js)
Create a new file src/firebase.js and paste the following:
import { initializeApp } from "firebase/app";
import { getAuth, GoogleAuthProvider } from "firebase/auth";
const firebaseConfig = {
apiKey: "YOUR_API_KEY",
authDomain: "YOUR_PROJECT_ID.firebaseapp.com",
projectId: "YOUR_PROJECT_ID",
storageBucket: "YOUR_PROJECT_ID.appspot.com",
messagingSenderId: "YOUR_MESSAGING_SENDER_ID",
appId: "YOUR_APP_ID",
};
const app = initializeApp(firebaseConfig);
const auth = getAuth(app);
const googleProvider = new GoogleAuthProvider();
export { auth, googleProvider };
🔹 Replace YOUR_API_KEY, YOUR_PROJECT_ID, etc. with the actual values from your Firebase console.
Implement Authentication in src/App.js
Replace the content of src/App.js:
import React, { useState } from "react";
import { auth, googleProvider } from "./firebase";
import {
signInWithPopup,
signInWithEmailAndPassword,
createUserWithEmailAndPassword,
signOut,
} from "firebase/auth";
function App() {
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
const [user, setUser] = useState(null);
// Sign in with Google
const signInWithGoogle = async () => {
try {
const result = await signInWithPopup(auth, googleProvider);
setUser(result.user);
} catch (error) {
console.error(error.message);
}
};
// Sign up with Email/Password
const register = async () => {
try {
const result = await createUserWithEmailAndPassword(auth, email, password);
setUser(result.user);
} catch (error) {
console.error(error.message);
}
};
// Sign in with Email/Password
const login = async () => {
try {
const result = await signInWithEmailAndPassword(auth, email, password);
setUser(result.user);
} catch (error) {
console.error(error.message);
}
};
// Logout
const logout = async () => {
try {
await signOut(auth);
setUser(null);
} catch (error) {
console.error(error.message);
}
};
return (
<div style={{ textAlign: "center", marginTop: "50px" }}>
<h1>🔥 Firebase Authentication</h1>
{user ? (
<>
<h2>Welcome, {user.displayName || user.email}!</h2>
<img src={user.photoURL} alt="User Avatar" style={{ borderRadius: "50%" }} />
<br />
<button onClick={logout}>Logout</button>
</>
) : (
<>
<input
type="email"
placeholder="Email"
value={email}
onChange={(e) => setEmail(e.target.value)}
/>
<input
type="password"
placeholder="Password"
value={password}
onChange={(e) => setPassword(e.target.value)}
/>
<button onClick={login}>Login</button>
<button onClick={register}>Register</button>
<br />
<button onClick={signInWithGoogle}>Sign in with Google</button>
</>
)}
</div>
);
}
export default App;
Features
✔ Google Sign-In
✔ Email & Password Authentication (Login/Register)
✔ User Profile Display (Name & Profile Picture)
✔ Logout Functionality