Firebase authentication can be used to allow users to sign into your application using multiple sign-in methods. One can sign in using email and password sign-in and also using other federated identity providers such as Google, Facebook, Apple, GitHub, Microsoft, Twitter, Yahoo, etc.
To implement sign-in using these identity providers you can either use the Firebase SDK to carry out the sign-in flow or do it manually using the sign-in with the respective identity provider’s library and passing the resulting ID token in case of Google or access token in case of Facebook or Twitter to Firebase. In the following document, we will learn how to use the SDK to implement the sign-in flow.
Before adding Firebase to your project you will have to create a Firebase project and register your application with that project. After which you will be provided with a configuration object with Firebase which in turn will connect your app with your Firebase project.
1. Setting Up the Firebase Console
☑️ In the Firebase console, click on Create a Project/Add a Project
☑️ Enter the project name you want to review and accept the Firebase terms and click continue.
☑️ Setting up Google Analytics for your project is optional.
☑️ After following the above steps you will see that your new project is ready, click on continue which will take you to the Project overview of the respective project.
2. Adding Firebase to Your Project
☑️ In the center of the Firebase console page locate and click on the Web icon(</>), to register your app.
☑️ Enter your app’s name and click Register app.
☑️ After your app is registered, you will find the command to install Firebase and also the configuration object to initialize Firebase.
1. Command to Install Firebase
$ npm install firebase
2. Initialize Firebase in the App
Adding and initializing the Firebase authentication SDK.
import { initializeApp } from "firebase/app"; import { getAuth } from "firebase/auth"; // TODO: Replace the following with your app's Firebase project configuration const firebaseConfig = { // ... }; // Initialize Firebase const firebaseApp = initializeApp(firebaseConfig); // Initialize Firebase Authentication and get a reference to the service const authApp = getAuth(app);
☑️ On the left end of the Firebase console locate build under product categories, expand its options and
☑️ Click on authentication.
☑️ Click on get started.
☑️ Under authentication, you will find sign-in methods and all the sign-in providers offered by Firebase.
☑️ For Google on the sign-in method tab, enable the Google sign-in method and click save.
☑️ To enable Facebook login
In a web application, the easiest way to deal with Google authentication is by handling the sign-in flow using Firebase JavaScript SDK.
1. Creating an Instance of the Google Provider Object to Handle the Sign-in Flow
auth_google_provider_create.js
import { GoogleAuthProvide} from "firebase/auth"; const googleProvider = new GoogleAuthProvider();
2. Authenticate with Firebase
Authentication with Firebase using Google provider object, where you can give the users two options to sign-in via their Google accounts either by redirecting to the sign-in page or by showing a sign-in popup.
Both the options listed below consist of error handling, also if one wants they can fetch additional data from the Google APIs using the Google token which in turn is the Google provider OAuth token.
⚫ Sign-in with a Popup Window
auth_signin_redirect.js import { getAuth, signInWithPopup, GoogleAuthProvider} from "firebase/auth"; const authApp = getAuth(); signInWithPopup(authApp, googleProvider) .then((result) => { // This gives you a Google Access Token. You can use it to access the Google API. const googleCredential = GoogleAuthProvider.credentialFromResult(result); const googleToken = credential.accessToken; // The signed-in user info. const user = result.user; // ... }).catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.customData.email; // The AuthCredential type that was used. const googleCredential = GoogleAuthProvider.credentialFromError(error); // ... });
⚫ Sign-in with a Sign-in Page
auth_signin_redirect.js
import { getAuth, signInWithRedirect } from "firebase/auth"; const authApp = getAuth(); signInWithRedirect(authApp, provider);
3. To Catch and Handle Errors, One can Retrieve the Google Provider’s OAuth Token by Calling getRedirectedResult when your Page Loads.
auth_google_signin_redirect_result.js
import { getAuth, getRedirectResult, GoogleAuthProvider } from "firebase/auth"; const authApp = getAuth(); getRedirectResult(authApp) .then((result) => { // This gives you a Google Access Token. You can use it to access Google APIs. const googleCredential = GoogleAuthProvider.credentialFromResult(result); const googleToken = credential.accessToken; // The signed-in user info. const user = result.user; }).catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.customData.email; // The AuthCredential type that was used. const googleCredential = GoogleAuthProvider.credentialFromError(error); // ... });
4. To Sign-out a User
auth_sign_out.js
import { getAuth, signOut } from "firebase/auth"; const authApp = getAuth(); signOut(authApp).then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });
1. Creating an Instance of the Facebook Provider Object
auth_facebook_provider_create.js
import { FacebookAuthProvider } from "firebase/auth"; const facebookProvider = new FacebookAuthProvider();
2. Authenticate with Firebase
Similar to Google or Facebook authentication can be done either with a popup window or via a sign-in page. But in the case of mobile devices, the sign-in page method is preferred.
⚫ Sign-in with a Popup Window
auth_signin_redirect.js
import { getAuth, signInWithPopup, FacebookAuthProvider } from "firebase/auth"; const authApp = getAuth(); signInWithPopup(authApp, facebookProvider) .then((result) => { // The signed-in user info. const user = result.user; // This gives you a Facebook Access Token. You can use it to access the Facebook API. const facebookCredential = FacebookAuthProvider.credentialFromResult(result); const facebookAccessToken = credential.accessToken; // ... }) .catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.customData.email; // The AuthCredential type that was used. const facebookCredential = FacebookAuthProvider.credentialFromError(error); // ... });
⚫ Sign-in with a Sign-in Page
auth_signin_redirect.js
import { getAuth, signInWithRedirect } from "firebase/auth"; const authApp = getAuth(); signInWithRedirect(authApp, facebookProvider);
3. To Catch and Handle Errors, One Can Retrieve the Facebook Provider’s OAuth Token by Calling getRedirectedResult when your Page Loads.
auth_facebook_signin_redirect_result.js
import { getAuth, getRedirectResult, FacebookAuthProvider } from "firebase/auth"; const authApp = getAuth(); getRedirectResult(authApp) .then((result) => { // This gives you a Facebook Access Token. You can use it to access the Facebook API. const facebookCredential = FacebookAuthProvider.credentialFromResult(result); const facebookToken = credential.accessToken; const user = result.user; }).catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; // The email of the user's account used. const email = error.customData.email; // AuthCredential type that was used. const facebookCredential = FacebookAuthProvider.credentialFromError(error); // ... });
4. To Sign-out a User
Follow the same step as Google authentication sign-out.
Firebase authentication offers developers a comprehensive solution for implementing multiple sign-in methods. By leveraging the Firebase SDK, developers can quickly and efficiently add authentication sign-up and sign-in functionality to their applications. This streamlined approach saves time and simplifies the implementation process.
Access Firebase Console, Select Your Project, Go to Authentication, Enable Sign-in Methods, Configure Sign-in Methods, Save Your Changes, and Test Sign-in Methods.
That’s it! You have now enabled and configured sign-in methods for your Firebase project, allowing users to authenticate using the selected methods in your application.
Firebase Console offers several advantages for developers and teams working with Firebase services: User-Friendly Interface, Centralized Management, Authentication and User Management, real-time database and Firestore Management, Cloud Functions Deployment, Cloud Hosting and Deployment, Cloud Storage Management etc.
you want to recover your authentication using Facebook for a specific service or application, follow these general steps: Open the App or Service, Locate the Sign-In Screen, Click on the “Sign In with Facebook” Option, Follow the Authentication Process, Confirm Access, Complete the Authentication, Check Your Facebook Account, Password Reset, App or Service Support etc.
How to Effectively Hire and Manage a Remote Team of Developers.
Download NowMindbowser played a crucial role in helping us bring everything together into a unified, cohesive product. Their commitment to industry-standard coding practices made an enormous difference, allowing developers to seamlessly transition in and out of the project without any confusion....
CEO, MarketsAI
I'm thrilled to be partnering with Mindbowser on our journey with TravelRite. The collaboration has been exceptional, and I’m truly grateful for the dedication and expertise the team has brought to the development process. Their commitment to our mission is...
Founder & CEO, TravelRite
The Mindbowser team's professionalism consistently impressed me. Their commitment to quality shone through in every aspect of the project. They truly went the extra mile, ensuring they understood our needs perfectly and were always willing to invest the time to...
CTO, New Day Therapeutics
I collaborated with Mindbowser for several years on a complex SaaS platform project. They took over a partially completed project and successfully transformed it into a fully functional and robust platform. Throughout the entire process, the quality of their work...
President, E.B. Carlson
Mindbowser and team are professional, talented and very responsive. They got us through a challenging situation with our IOT product successfully. They will be our go to dev team going forward.
Founder, Cascada
Amazing team to work with. Very responsive and very skilled in both front and backend engineering. Looking forward to our next project together.
Co-Founder, Emerge
The team is great to work with. Very professional, on task, and efficient.
Founder, PeriopMD
I can not express enough how pleased we are with the whole team. From the first call and meeting, they took our vision and ran with it. Communication was easy and everyone was flexible to our schedule. I’m excited to...
Founder, Seeke
Mindbowser has truly been foundational in my journey from concept to design and onto that final launch phase.
CEO, KickSnap
We had very close go live timeline and Mindbowser team got us live a month before.
CEO, BuyNow WorldWide
If you want a team of great developers, I recommend them for the next project.
Founder, Teach Reach
Mindbowser built both iOS and Android apps for Mindworks, that have stood the test of time. 5 years later they still function quite beautifully. Their team always met their objectives and I'm very happy with the end result. Thank you!
Founder, Mindworks
Mindbowser has delivered a much better quality product than our previous tech vendors. Our product is stable and passed Well Architected Framework Review from AWS.
CEO, PurpleAnt
I am happy to share that we got USD 10k in cloud credits courtesy of our friends at Mindbowser. Thank you Pravin and Ayush, this means a lot to us.
CTO, Shortlist
Mindbowser is one of the reasons that our app is successful. These guys have been a great team.
Founder & CEO, MangoMirror
Kudos for all your hard work and diligence on the Telehealth platform project. You made it possible.
CEO, ThriveHealth
Mindbowser helped us build an awesome iOS app to bring balance to people’s lives.
CEO, SMILINGMIND
They were a very responsive team! Extremely easy to communicate and work with!
Founder & CEO, TotTech
We’ve had very little-to-no hiccups at all—it’s been a really pleasurable experience.
Co-Founder, TEAM8s
Mindbowser was very helpful with explaining the development process and started quickly on the project.
Executive Director of Product Development, Innovation Lab
The greatest benefit we got from Mindbowser is the expertise. Their team has developed apps in all different industries with all types of social proofs.
Co-Founder, Vesica
Mindbowser is professional, efficient and thorough.
Consultant, XPRIZE
Very committed, they create beautiful apps and are very benevolent. They have brilliant Ideas.
Founder, S.T.A.R.S of Wellness
Mindbowser was great; they listened to us a lot and helped us hone in on the actual idea of the app. They had put together fantastic wireframes for us.
Co-Founder, Flat Earth
Ayush was responsive and paired me with the best team member possible, to complete my complex vision and project. Could not be happier.
Founder, Child Life On Call
The team from Mindbowser stayed on task, asked the right questions, and completed the required tasks in a timely fashion! Strong work team!
CEO, SDOH2Health LLC
Mindbowser was easy to work with and hit the ground running, immediately feeling like part of our team.
CEO, Stealth Startup
Mindbowser was an excellent partner in developing my fitness app. They were patient, attentive, & understood my business needs. The end product exceeded my expectations. Thrilled to share it globally.
Owner, Phalanx
Mindbowser's expertise in tech, process & mobile development made them our choice for our app. The team was dedicated to the process & delivered high-quality features on time. They also gave valuable industry advice. Highly recommend them for app development...
Co-Founder, Fox&Fork