📖 Scenario: You are building a simple web app that allows users to sign in using their GitHub accounts. This helps users log in quickly without creating a new username and password.
🎯 Goal: Create a Firebase authentication setup that enables users to sign in with GitHub. You will configure the initial Firebase app, set up GitHub as an authentication provider, implement the sign-in logic, and finalize the sign-in button in HTML.
📋 What You'll Learn
Initialize Firebase app with given config
Create a GitHubAuthProvider instance
Implement signInWithPopup using GitHub provider
Add a button element with id 'github-signin' for triggering sign-in
💡 Why This Matters
🌍 Real World
Many web apps allow users to sign in using their existing GitHub accounts to simplify login and improve security.
💼 Career
Understanding how to integrate third-party authentication providers like GitHub with Firebase is a valuable skill for building modern web applications.
Progress0 / 4 steps
1
Initialize Firebase App
Create a constant called firebaseConfig with the exact keys and values: apiKey: 'AIzaSyExample1234567890', authDomain: 'your-app.firebaseapp.com', projectId: 'your-app', storageBucket: 'your-app.appspot.com', messagingSenderId: '1234567890', appId: '1:1234567890:web:abcdef123456'. Then initialize Firebase app by calling initializeApp(firebaseConfig) and assign it to a constant called app.
Firebase
Hint
Use const to declare firebaseConfig and app. The initializeApp function comes from Firebase SDK.
2
Create GitHub Auth Provider
Create a constant called provider and assign it a new instance of GithubAuthProvider from Firebase authentication.
Firebase
Hint
Use new GithubAuthProvider() to create the provider instance.
3
Implement Sign-In Logic
Create a constant called auth by calling getAuth(app). Then write a function called signInWithGitHub that calls signInWithPopup(auth, provider) to start the GitHub sign-in process.
Firebase
Hint
Use getAuth(app) to get the auth instance. Define a function that calls signInWithPopup with auth and provider.
4
Add Sign-In Button in HTML
Add a button element with id="github-signin" and text content Sign in with GitHub. Then add an event listener to this button that calls the signInWithGitHub function when clicked.
Firebase
Hint
Create a button element, set its id and text, append it to the document body, and add a click event listener that calls signInWithGitHub.
Practice
(1/5)
1. What is the main purpose of using GithubAuthProvider in Firebase authentication?
easy
A. To send emails to users
B. To store user data in Firebase database
C. To allow users to sign in using their GitHub accounts
D. To create a new GitHub repository
Solution
Step 1: Understand the role of GithubAuthProvider
GithubAuthProvider is a Firebase class that helps connect Firebase authentication with GitHub accounts.
Step 2: Identify its main use
It is used to let users sign in to your app using their GitHub login credentials.
Final Answer:
To allow users to sign in using their GitHub accounts -> Option C
Quick Check:
GithubAuthProvider = GitHub sign-in [OK]
Hint: GithubAuthProvider is for GitHub login only [OK]
Common Mistakes:
Confusing authentication with database storage
Thinking it sends emails
Assuming it manages GitHub repositories
2. Which of the following is the correct way to create a GitHub auth provider instance in Firebase JavaScript SDK?
easy
A. const provider = new GitHubAuth();
B. const provider = new GitAuthProvider();
C. const provider = new GithubProvider();
D. const provider = new GithubAuthProvider();
Solution
Step 1: Recall the exact class name
The Firebase SDK uses the class named GithubAuthProvider to create a GitHub auth provider.
Step 2: Match the syntax
The correct syntax to create an instance is new GithubAuthProvider().
Final Answer:
const provider = new GithubAuthProvider(); -> Option D
Quick Check:
Correct class name and syntax = const provider = new GithubAuthProvider(); [OK]
Hint: Class name is exactly GithubAuthProvider with capital G and A [OK]
Common Mistakes:
Misspelling the class name
Using incorrect capitalization
Using incomplete class names
3. What will happen when the following Firebase code runs successfully?
const provider = new GithubAuthProvider();
const result = await signInWithPopup(auth, provider);
console.log(result.user.email);
medium
A. It throws an error because signInWithPopup is not async
B. It logs the signed-in user's GitHub email address
C. It logs the user's GitHub password
D. It logs undefined because result has no user
Solution
Step 1: Understand signInWithPopup behavior
This function opens a popup for GitHub sign-in and returns a user credential object on success.
Step 2: Access user email from result
The result.user.email contains the authenticated user's email from GitHub.
Final Answer:
It logs the signed-in user's GitHub email address -> Option B
Quick Check:
signInWithPopup returns user info including email [OK]
Hint: signInWithPopup returns user info including email [OK]
Common Mistakes:
Thinking password is accessible
Assuming signInWithPopup is synchronous
Expecting result.user to be undefined
4. You wrote this code but get an error: signInWithPopup(auth, provider) is not a function. What is the most likely cause?
medium
A. You forgot to import signInWithPopup from Firebase auth module
B. You did not create a GitHub account
C. You used signInWithRedirect instead of signInWithPopup
D. You did not enable GitHub sign-in in Firebase console
Solution
Step 1: Analyze the error message
The error says signInWithPopup is not a function, meaning it is not recognized in the code.
Step 2: Check imports
This usually happens if signInWithPopup was not imported from Firebase auth module properly.
Final Answer:
You forgot to import signInWithPopup from Firebase auth module -> Option A
Quick Check:
Missing import causes function not found error [OK]
Hint: Always import functions you use from Firebase SDK [OK]
Common Mistakes:
Assuming GitHub account absence causes this error
Confusing signInWithPopup with signInWithRedirect
Ignoring Firebase console settings
5. You want to add GitHub sign-in to your Firebase app. Which steps must you complete before calling signInWithPopup(auth, provider)? Select the best sequence.
hard
A. Register OAuth app on GitHub, enable GitHub sign-in in Firebase console, create GithubAuthProvider instance
B. Create GithubAuthProvider instance, enable GitHub sign-in in Firebase console, register OAuth app on GitHub
C. Register OAuth app on GitHub, create GithubAuthProvider instance, enable GitHub sign-in in Firebase console
D. Enable GitHub sign-in in Firebase console, create GithubAuthProvider instance, register OAuth app on GitHub
Solution
Step 1: Register OAuth app on GitHub
You must register your app on GitHub to get client ID and secret for authentication.
Step 2: Enable GitHub sign-in in Firebase console
This step activates GitHub as a sign-in provider in your Firebase project.
Step 3: Create GithubAuthProvider instance in your code
After setup, create the provider instance to use in signInWithPopup.
Final Answer:
Register OAuth app on GitHub, enable GitHub sign-in in Firebase console, create GithubAuthProvider instance -> Option A
Quick Check:
Setup order matters: GitHub app, Firebase console, then code [OK]
Hint: Register on GitHub, enable in Firebase, then code [OK]
Common Mistakes:
Skipping enabling GitHub sign-in in Firebase
Not registering OAuth app on GitHub
Creating provider before setup steps
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.