Firebase Miniseries 1: Auth

What is Firebase Auth?

Firebase auth is an authentication api that lets you register, login and manage users on your website/app.

Implementing auth on your app may seem complicated, but if you follow these simple steps i will show you how s…


This content originally appeared on DEV Community and was authored by Uriel Bitton

What is Firebase Auth?

Firebase auth is an authentication api that lets you register, login and manage users on your website/app.

Implementing auth on your app may seem complicated, but if you follow these simple steps i will show you how simple and quick it is to use it.

Step 1 - Initializing our firebase app

Head to Firebase.com and go to the console. Create a new project, enter a project name and disable google analytics on the next slide.
Once your project is created, on the current page you are redirected to, under the title: "Get started by adding Firebase to your app" click on the code icon that is called "web" next to iOS and android. Enter a name for your web project, usually it should be called "my-project-web". No need for firebase hosting, so just hit continue. On the next slide, click continue to console. You have now created your first firebase app!

Step 2 - Setting up the auth

On the left sidebar, click authentication. On the header, click get started. We're gonna start with simple email/password auth for now. So click the first option box called email/password, then click enable, then hit save.
That's really all the configuration we need to do to set up auth on your app.

Step 3 - Implementing the auth on our app.

The first thing we need to do is get the firebase config code. To do that we can head to our firebase app. On the sidebar at the top near Project overview, click the settings (cog) icon and select Project Settings. Scroll down until you see SDK setup and configuration. Copy the code you see inside:

const firebaseConfig = {
  apiKey: '',
  etc...
}

Create a config file inside your project folder, called firebase.js and copy this code in, replacing your config values accordingly:

import firebase from "firebase"

const config = {
  apiKey: "fill in with your real values",
  authDomain: "fill in with your real values",
  projectId: "fill in with your real values",
  storageBucket: "fill in with your real values",
  messagingSenderId: "fill in with your real values",
  appId: "fill in with your real values"
}
const firebaseApp = firebase.initializeApp(config)

const db = firebaseApp.firestore()
const auth = firebaseApp.auth()
const storage = firebaseApp.storage()

export { db, auth, storage } 

Note: if you get an error with firebase, its probably some doc mistakes, to solve it just use this version of firebase npm: "firebase": "^8.9.1",

Login

Now in your project, usually in the folder called auth, you can create 2 files, one will be to log users in and the other to create their accounts. So we can name the first login.js and the second register.js. In the Login file you can copy this code in:

import { auth } from 'your/firebase.js/path' 
const handleLogin = () => { 
    auth.signInWithEmailAndPassword(email, password)
    .then(() => {
      authListener()
    })
    .catch(err => {
      switch(err.code) {
        //visit firebase for full list of error codes to display to user when their auth is incorrect.
      }  
    }) 
  }

const authListener = () => {
    auth.onAuthStateChanged(user => {
      if(user) {
        setMyUser(user) //if using react
      }
      else {
        setMyUser(null) //if using react
      }
    })
  }

What happens here is when the user clicks on the login button that runs the function handleLogin(), we call the firebase function auth.signInWithEmailAndPassword, providing the user's entered email and password and then we call onAuthStateChanged() which will set a state that you can define to receive the firebase user's data. That covers Login! Let's take a look at registering a user.

Register

Inside our Register.js file let's copy the following code:

const handleSignup = () => {
      auth.createUserWithEmailAndPassword(email, password
      .then(() => {
        auth.onAuthStateChanged(user => {
          if(user) {
            user.updateProfile({
              displayName: `${firstName} ${lastName}`,
              photoURL: 'user-uploaded-img'
            })
            .then(() => { 
              navigate('/')
            })
            .catch(err => {
              console.log(err)
            })
          }
        })
      })
      .catch(err => {
        switch(err.code) {
          //switch error codes 
        }
      })
  }

As you can see the Register file is very similar to the login, the only difference is we call a slightly different function from firebase's auth API called createUserWithEmailAndPassword(). This function also takes in an email and password as parameters and will create a user once both values are valid. We then update the user's displayName and photoURL with values which you can optionally ask the user for when they create their account.

Conclusion

That's all it takes. You now have a fully functioning auth system on your app. By making use of the 2 functions signInWithEmailAndPassword() and createUserWithEmailAndPassword() firebase auth provides us, we can authenticate users by creating their account and/or logging them in.


This content originally appeared on DEV Community and was authored by Uriel Bitton


Print Share Comment Cite Upload Translate Updates
APA

Uriel Bitton | Sciencx (2022-05-10T22:55:09+00:00) Firebase Miniseries 1: Auth. Retrieved from https://www.scien.cx/2022/05/10/firebase-miniseries-1-auth/

MLA
" » Firebase Miniseries 1: Auth." Uriel Bitton | Sciencx - Tuesday May 10, 2022, https://www.scien.cx/2022/05/10/firebase-miniseries-1-auth/
HARVARD
Uriel Bitton | Sciencx Tuesday May 10, 2022 » Firebase Miniseries 1: Auth., viewed ,<https://www.scien.cx/2022/05/10/firebase-miniseries-1-auth/>
VANCOUVER
Uriel Bitton | Sciencx - » Firebase Miniseries 1: Auth. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/05/10/firebase-miniseries-1-auth/
CHICAGO
" » Firebase Miniseries 1: Auth." Uriel Bitton | Sciencx - Accessed . https://www.scien.cx/2022/05/10/firebase-miniseries-1-auth/
IEEE
" » Firebase Miniseries 1: Auth." Uriel Bitton | Sciencx [Online]. Available: https://www.scien.cx/2022/05/10/firebase-miniseries-1-auth/. [Accessed: ]
rf:citation
» Firebase Miniseries 1: Auth | Uriel Bitton | Sciencx | https://www.scien.cx/2022/05/10/firebase-miniseries-1-auth/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.