add google sign in

This commit is contained in:
yauwailam 2025-02-08 15:13:04 +08:00
parent 491b1abb04
commit 10b5abbfdc

View file

@ -6,7 +6,7 @@ Description: login
<html> <html>
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-sale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script src="https://cdn.tailwindcss.com"></script> <script src="https://cdn.tailwindcss.com"></script>
</head> </head>
<body> <body>
@ -15,95 +15,107 @@ Description: login
<form> <form>
<div> <div>
<label for="email">Email</label> <label for="email">Email</label>
<input <input type="text" id="email" />
type="text"
id="email"
/>
</div> </div>
<div> <div>
<label for="password">Password</label> <label for="password">Password</label>
<input <input type="password" id="password" />
type="password"
id="password"
/>
</div> </div>
<div <div id="errorMessage" class="hidden text-red-500">
id="errorMessage" An error occurred.
></div> </div>
<div id="userStatus" class="hidden text-green-500"></div>
<div> <div>
<button <button type="button" id="loginButton">Login</button>
type="button" </div>
id="loginButton"> <div>
Login <button type="button" id="googleSignInButton">
Sign in with Google
</button> </button>
</div> </div>
<div> <div>
<a <a href="SignUp.html">Sign Up</a>
href="SignUp.html"
>
Sign Up
</a>
</div> </div>
</form> </form>
</div> </div>
<script type="module"> <script type="module">
// Import the functions you need from the SDKs you need
import { initializeApp } from "https://www.gstatic.com/firebasejs/11.3.0/firebase-app.js"; import { initializeApp } from "https://www.gstatic.com/firebasejs/11.3.0/firebase-app.js";
// 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
import { firebaseConfig } from "./firebase-config.js"; import { firebaseConfig } from "./firebase-config.js";
// Initialize Firebase
import { import {
//determine which services you want to use
getAuth, getAuth,
createUserWithEmailAndPassword,
signInWithEmailAndPassword, signInWithEmailAndPassword,
onAuthStateChanged, onAuthStateChanged,
GoogleAuthProvider,
signInWithPopup,
signOut, signOut,
} from "https://www.gstatic.com/firebasejs/11.3.0/firebase-auth.js"; } from "https://www.gstatic.com/firebasejs/11.3.0/firebase-auth.js";
const app = initializeApp(firebaseConfig); const app = initializeApp(firebaseConfig);
//Working with Auth
const auth = getAuth(); const auth = getAuth();
document.getElementById("loginButton").onclick = login; document.getElementById("loginButton").onclick = login;
document.getElementById("googleSignInButton").onclick = signInWithGoogle;
const userStatusDiv = document.getElementById("userStatus");
const errorMessageDiv = document.getElementById("errorMessage");
// Sign out any existing user on page load to prevent auto sign-in
signOut(auth);
// Handle Auth State Change Event
onAuthStateChanged(auth, (user) => { onAuthStateChanged(auth, (user) => {
if (user) { if (user) {
console(`Login successful`); userStatusDiv.innerHTML = `Signed in as: <strong>${
user.displayName || user.email
}</strong>`;
userStatusDiv.classList.remove("hidden");
} else { } else {
userStatusDiv.innerHTML = "";
userStatusDiv.classList.add("hidden");
} }
}); });
function login() { function login() {
const email = document.getElementById("email").value; const email = document.getElementById("email").value;
const password = document.getElementById("password").value; const password = document.getElementById("password").value;
const errorMessageDiv = document.getElementById("errorMessage");
signInWithEmailAndPassword(auth, email, password) signInWithEmailAndPassword(auth, email, password)
.then((userCredential) => { .then(() => {
const user = userCredential.user; errorMessageDiv.classList.add("hidden");
}) })
.catch((error) => { .catch((error) => {
const errorCode = error.code; const errorCode = error.code;
let message = "An error occurred. Please try again.";
if ( if (
errorCode === "auth/wrong-password" || errorCode === "auth/wrong-password" ||
errorCode === "auth/user-not-found" errorCode === "auth/user-not-found"
) { ) {
} else { message = "Wrong Email/Password!";
errorMessageDiv.textContent = "Wrong Email/Password!";
} }
errorMessageDiv.innerHTML = `<strong>${message}</strong>`;
errorMessageDiv.classList.remove("hidden");
});
}
// if you are testing in live server please add that server domain to the authorized domain if not the pop up will not show up
function signInWithGoogle() {
const provider = new GoogleAuthProvider();
provider.setCustomParameters({
prompt: "select_account", // Forces account selection every time
});
signInWithPopup(auth, provider)
.then(() => {
errorMessageDiv.classList.add("hidden");
})
.catch(() => {
errorMessageDiv.innerHTML = `<strong>Google Sign-In failed. Please try again.</strong>`;
errorMessageDiv.classList.remove("hidden");
}); });
} }
</script> </script>
</body> </body>
</html> </html>