• Home
  • Insight
  • Blog
  • Business
  • Entertainment
  • Health
  • Politics
  • Shop
    • Gift Shop
    • Value Shop
    • Store
    • Bargain Shop
    • Discount
  • Sports
  • Tech
  • Travel
  • USA
  • Video
  • World
    • Asia
    • Africa
    • South America
    • North America
    • Europe
    • Oceania
Thursday, July 30, 2026
No Result
View All Result
Subscribe Now
  • Home
  • Insight
  • Blog
  • Business
  • Entertainment
  • Health
  • Politics
  • Shop
    • Gift Shop
    • Value Shop
    • Store
    • Bargain Shop
    • Discount
  • Sports
  • Tech
  • Travel
  • USA
    TX Rep. Brandon Gill Mocks James Talarico Over Fauci Action Figure Post

    TX Rep. Brandon Gill Mocks James Talarico Over Fauci Action Figure Post

    NBA players are ‘being taught’ to flop

    NBA players are ‘being taught’ to flop

    Industry was warned for years about chemical ‘runaway’ dangers. Then came near-catastrophe in O.C.

    Industry was warned for years about chemical ‘runaway’ dangers. Then came near-catastrophe in O.C.

    Trump administration seeks government-wide NDAs to stop leaks : NPR

    Trump administration seeks government-wide NDAs to stop leaks : NPR

    Dog discharges shotgun inside truck, striking woman at Nebraska traffic light

    Dog discharges shotgun inside truck, striking woman at Nebraska traffic light

    Toshifumi Suzuki, Japan’s ‘God’ of Convenience Stores, Dies at 93

    Toshifumi Suzuki, Japan’s ‘God’ of Convenience Stores, Dies at 93

     Judge Sanctioned CoreCivic for Destroying Video in ICE Death Suit

     Judge Sanctioned CoreCivic for Destroying Video in ICE Death Suit

    Suspect dead after opening fire near White House security checkpoint, Secret Service says

    Suspect dead after opening fire near White House security checkpoint, Secret Service says

    Trump trashes Colbert’s high-rated finale as “no ratings”

    Trump trashes Colbert’s high-rated finale as “no ratings”

  • Video
  • World
    • Asia
    • Africa
    • South America
    • North America
    • Europe
    • Oceania
The Insight Post
  • Home
  • Insight
  • Blog
  • Business
  • Entertainment
  • Health
  • Politics
  • Shop
    • Gift Shop
    • Value Shop
    • Store
    • Bargain Shop
    • Discount
  • Sports
  • Tech
  • Travel
  • USA
    TX Rep. Brandon Gill Mocks James Talarico Over Fauci Action Figure Post

    TX Rep. Brandon Gill Mocks James Talarico Over Fauci Action Figure Post

    NBA players are ‘being taught’ to flop

    NBA players are ‘being taught’ to flop

    Industry was warned for years about chemical ‘runaway’ dangers. Then came near-catastrophe in O.C.

    Industry was warned for years about chemical ‘runaway’ dangers. Then came near-catastrophe in O.C.

    Trump administration seeks government-wide NDAs to stop leaks : NPR

    Trump administration seeks government-wide NDAs to stop leaks : NPR

    Dog discharges shotgun inside truck, striking woman at Nebraska traffic light

    Dog discharges shotgun inside truck, striking woman at Nebraska traffic light

    Toshifumi Suzuki, Japan’s ‘God’ of Convenience Stores, Dies at 93

    Toshifumi Suzuki, Japan’s ‘God’ of Convenience Stores, Dies at 93

     Judge Sanctioned CoreCivic for Destroying Video in ICE Death Suit

     Judge Sanctioned CoreCivic for Destroying Video in ICE Death Suit

    Suspect dead after opening fire near White House security checkpoint, Secret Service says

    Suspect dead after opening fire near White House security checkpoint, Secret Service says

    Trump trashes Colbert’s high-rated finale as “no ratings”

    Trump trashes Colbert’s high-rated finale as “no ratings”

  • Video
  • World
    • Asia
    • Africa
    • South America
    • North America
    • Europe
    • Oceania
No Result
View All Result
No Result
View All Result
Home Mobile

Firebase + React Native Authentication

by Theinsightpost
August 8, 2022
in Mobile
0 0
0
Firebase + React Native Authentication


This article is written by Sneh Pandya and talks about React Native firebase authentication

Firebase is a Backend-as-a-Service (BaaS) from Google that provides a number of advantages to React Native developers. With Firebase and React Native, you can quickly build mobile applications, keeping costs low without having to worry about backend solutions. Firebase provides a suite of great products, such as:

In this article, you will learn how to:

Let’s see how we can achieve this step by step.

So, let’s get started, but first, let us know what’s your relationship with CI/CD tools?

Codemagic builds and tests your app after every commit, notifies selected team members and releases to the end user. Automatically.Get started

Prerequisites

To start integrating Firebase into our app, we require the following:

  • Access to the Firebase Console linked with a Google account

  • A React Native project in which Firebase services will be added

  • A completed environment setup for the React Native project

Set up a new React Native application

React Native creates directories for both Android and iOS that are labeled as android and ios, respectively.

To create a new application, run the commands as follows:

npm install -g expo-cli // To add Expo CLI on your machine

npx react-native init ReactNativeFirebaseApp // To set up a new React Native app

cd ReactNativeFirebaseApp

To complete the Firebase setup for a React Native app, you need to follow platform-specific steps. There are two ways to add Firebase to a React Native project:

  1. Using Firebase Web SDK

  2. Using react-native-firebase

We will continue with the second option, which is an awesome open-source project for linking React Native apps with Firebase.

To install the Firebase Authentication dependency in the React Native app, execute the command below:

# Install & set up the app module
yarn add @react-native-firebase/app

# Install the authentication module
yarn add @react-native-firebase/auth

# If you're developing your app using iOS, run this command
cd ios/ && pod install

Set up a new project in Firebase Console

Follow the steps below to create a new project in the Firebase Console:

  • Go to the Firebase Console, and log in with your preferred Google account.

  • Click on the Add project button.

  • Enter your preferred Project name, and click on Continue.

Name your Firebase project

  • We will set up React Native Authentication for our app in this article. React Native Authentication does not require Google Analytics to be enabled, so keep Enable Google Analytics for this project enabled if you wish to, and click Continue.

React Native Authentication does not require Google Analytics to be enabled

  • Let the project setup complete. Once it is done, you will see the completion status, as shown below. Click on Continue.

Firebase + React Native authentication

You will be redirected to the Firebase project dashboard.

Firebase project dashboard

Setup for Android

Now, we will set up Firebase dependencies for Android.

  1. Click on the Android icon visible on the screen.

  2. You will be asked to fill in the details for your app. It is only mandatory to enter the Android package name for now. You can get the package name of the Android app from Android Studio. Open Android Studio and navigate to the android directory, click on the Project Files section in the top-left corner, navigate to app, and then open the build.gradle file. Copy the applicationId from the app-level build.gradle file.

In our case, it’s com.snehpandya.rnfirebaseauth. Enter the details in the Firebase Console, and click on Register app.

Add Firebase to your Android app

  1. Now, choose the App name. This is optional, and if you leave this field empty, an auto-generated app name will be used.

  2. Now, to generate and provide the SHA-1 hash, navigate to this page. Copy the command to generate the SHA-1 hash, and paste it into your IDE terminal to get the SHA-1 hash. Then copy and paste the generated SHA-1 into the Firebase Console.

cd android && ./gradlew signingReport

This generates two variant keys. You can copy the SHA1 that belongs to the debugAndroidTest variant key option.

  1. Then click on Register app.

  2. In the next step, download the google-services.json file provided by Firebase, and put it in the Android app directory.

Register app + put it in the Android app directory

  1. For the Android app setup, Firebase walks you through a few more steps. In the /android/build.gradle file, add the Google Services dependency:
buildscript {
  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
  }
  dependencies {
    ...
    // Add this line
    classpath 'com.google.gms:google-services:4.3.5'
  }
}

allprojects {
  ...
  repositories {
    // Check that you have the following line (if not, add it):
    google()  // Google's Maven repository
    ...
  }
}
  1. In the /android/app/build.gradle file, add the Firebase and Google Services dependencies:
apply plugin: 'com.android.application'
// Add this line
apply plugin: 'com.google.gms.google-services'

dependencies {
  // Import the Firebase BoM
  implementation platform('com.google.firebase:firebase-bom:26.6.0')

  // Add the dependency for the Firebase SDK for Google Analytics
  // When using the BoM, don't specify versions in Firebase dependencies
  implementation 'com.google.firebase:firebase-analytics'

  // Add the dependencies for any other desired Firebase products
  // https://firebase.google.com/docs/android/setup#available-libraries
}
  1. Then click on Sync now to build dependencies for your Android project. After that, in the Firebase Console, click on Next.

  2. Then click Continue to console.

Continue to add Android version of your React Native app to the Firebase

  1. Once redirected, on the Firebase Console dashboard, you will see that the Android version of your React Native app has been added to the Firebase.

Android version of your React Native app has been added to the Firebase

  1. Now, click the gear icon beside Project Overview, then click Project Settings. Navigate to the General tab, and enter your email in the Support email field.

  1. Next, navigate to the Authentication page from the left pane, and click Sign-in method.

  2. Click on the Google sign-in edit button on the right, and enter the project name and support email. Enable this by clicking the toggle control in the top-right corner. Then click Save.

Authentication page

Authentication page: enter the project name and support email

Setup for iOS

If you have skipped the Android setup and proceeded directly to the iOS setup, then make sure you check out steps 12 to 14; otherwise, you might face errors.

  1. Go to Settings and navigate to the General tab.

  2. Scroll down and click Add app.

Add app

  1. Now select iOS from the options.

Select iOS

  1. Provide the iOS bundle ID and the App nickname. Then click on Register app.

  2. To find the Bundle ID, navigate to the React Native project root directory → ios → Runner.xcodeproj → project.pbxproj by searching for PRODUCT_BUNDLE_IDENTIFIER.

  3. Then paste the Bundle ID into the Firebase Console, and download the GoogleService-Info.plist file.

Add Firebase to your iOS app

  1. Copy the initialization code, and paste it into the iOS AppDelegate class:
import UIKit
import Firebase

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

  var window: UIWindow?

  func application(_ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions:
      [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    FirebaseApp.configure()
    return true
  }
}
  1. In the Firebase Console, click on Continue to console.

Firebase Console: click continue

You can now see the iOS app listed on the Firebase Console.

iOS app is listed on the Firebase Console

  1. Open the ios folder from the React Native project directory in Xcode. Then drag and drop the GoogleService-Info.plist file into the Runner subfolder. When a dialog box appears, make sure that Runner is selected in the Add to targets box. Then click Finish.

Implement Firebase Authentication in React Native

In most scenarios involving Authentication, you will want to know whether your users are currently signed in or signed out of your application. The module provides a method called onAuthStateChanged, which allows you to subscribe to the users’ current authentication state and receive an event whenever that state changes.

  1. Let’s set up an initial state, which blocks rendering of the app while the connection is established asynchronously in the background.
import React, { useState, useEffect } from 'react';
import { View, Text } from 'react-native';
import auth from '@react-native-firebase/auth';

function App() {
  // Set an initializing state while Firebase connects
  const [initializing, setInitializing] = useState(true);
  const [user, setUser] = useState();

  // Handle user state changes
  function onAuthStateChanged(user) {
    setUser(user);
    if (initializing) setInitializing(false);
  }

  useEffect(() => {
    const subscriber = auth().onAuthStateChanged(onAuthStateChanged);
    return subscriber; // unsubscribe on unmount
  }, []);

  if (initializing) return null;

  if (!user) {
    return (
      <View>
        <Text>Login</Text>
      </View>
    );
  }

  return (
    <View>
      <Text>Welcome {user.email}</Text>
    </View>
  );
}
  1. Before triggering a sign-in request, initialize the Google SDK using any required scopes and the webClientId, which can be found in the android/app/google-services.json file as the client/oauth_client/client_id property ending with .apps.googleusercontent.com.
import { GoogleSignin } from '@react-native-community/google-signin';

GoogleSignin.configure({
  webClientId: '',
});
  1. Now, set up the app to trigger a sign-in request with Google using the signIn method.
import React from 'react';
import { Button } from 'react-native';

function GoogleSignIn() {
  return (
    <Button
      title="Google Sign-In"
      onPress={() => onGoogleButtonPress().then(() => console.log('Signed in with Google!'))}
    />
  );
}
  1. The onGoogleButtonPress action needs to be implemented as follows:
import auth from '@react-native-firebase/auth';
import { GoogleSignin } from '@react-native-community/google-signin';

async function onGoogleButtonPress() {
  // Get the user's ID token
  const { idToken } = await GoogleSignin.signIn();

  // Create a Google credential with the token
  const googleCredential = auth.GoogleAuthProvider.credential(idToken);

  // Sign in the user with the credential
  return auth().signInWithCredential(googleCredential);
}
  1. Upon successful sign-in, the onAuthStateChanged listener will trigger with the new authentication state of the user.

Configure Firebase on Codemagic

Previously, we downloaded the google-services.json and GoogleService-Info.plist files and kept them in the android and ios directories, respectively. These files contain sensitive information, API keys and credentials, and ideally, they shouldn’t be pushed into the version control system or publicly exposed. Let’s secure our sensitive data.

Configure version control system

List the two files, google-services.json and GoogleService-Info.plist, in the .gitignore file to prevent them from being checked into a version control system, such as Git. Once the exclusions are added into .gitignore, commit the .gitignore file.

// .gitignore
google-services.json
GoogleService-Info.plist

Encode credential files

We have ensured that the sensitive files won’t be committed into the version control system, but the continuous integration server will still expect to find the files in order to successfully build the app. To encode the files, run the following command from your terminal in the project directory:

openssl base64 -in android/app/google-services.json
openssl base64 -in ios/Runner/GoogleService-Info.plist

This command will print the encoded content. Paste the encoded content into the Codemagic dashboard under environment variables.

Add environment variables

  1. Log in to Codemagic using GitHub, GitLab or Bitbucket.

  2. Find the project in the Applications list. We used the name ReactNativeFirebaseAuth here.

  3. Click the Settings button to configure the app settings.

  4. Expand Environment variables and add two encoded content strings generated from the terminal as:

ANDROID_FIREBASE_JSON (Variable name) -> encoded string from google-services.json (Variable value)

IOS_FIREBASE_JSON (Variable name) -> encoded string from GoogleService-Info.plist (Variable value)

Check the Secure checkbox to ensure that the values won’t be displayed in the build logs.

  1. Now, click on Save.

Add pre-build scripts

  1. In the app settings, click on the + button before the Build stage.

  2. Add the following Pre-build script and click Save:

echo $ANDROID_FIREBASE_JSON | base64 --decode > $CM_BUILD_DIR/android/app/google-services.json

echo "Listing android Directory to confirm the google-services.json is there! "
ls android/app/

echo $IOS_FIREBASE_JSON | base64 --decode > $CM_BUILD_DIR/ios/Runner/GoogleService-Info.plist

echo "nListing iOS Directory to confirm the GoogleService-Info.plist is there! "
ls ios/Runner/

Trigger build

Click the Start new build button to start the build process. After the build is finished successfully, you can also download the artifacts to test it on a real device.

To generate release builds for your Android and iOS apps, you can follow the articles provided below:

Conclusion

We now have a simple Firebase + React Native authentication flow set up. When combining React Native with Firebase’s services, your apps can do wonders! Codemagic makes it possible to deploy and publish apps with seamless integration, and it supports building CI/CD apps for Android, iOS, React Native, Flutter and more mobile platforms.

❗ If you have any questions or you need help then post your question/comment HERE

Useful links and references

  • A practical guide on Firebase Authentication using Flutter can be found here.

  • React Native Firebase modules can be found here and here.

  • Learn how to load Firebase config in Codemagic with environment variables here.

  • Here’s a guide on Firebase App Distribution using CLI.

  • Here’s a guide on Continuous Integration and Delivery for React Native apps.

  • Here’s a guide on how to develop and distribute iOS apps without Mac with React Native and Codemagic.

  • For discussions, learning and support, join the Codemagic Slack Community.


​
Sneh is a Senior Product Manager based in Baroda. He is a community organizer at Google Developers Group and co-host of NinjaTalks podcast. His passion for building meaningful products inspires him to write blogs, speak at conferences and mentor different talents.
You can reach out to him over Twitter (@SnehPandya18) or via email (sneh.pandya1@gmail.com).





Source link

ShareTweetSend
Previous Post

Kenya: Right groups warn of violence against women during elections

Next Post

Municipal container park in Evere will close from September 1

Related News

Announcing Codemagic Patch: an open-source CodePush rebuild for React Native
Mobile

Announcing Codemagic Patch: an open-source CodePush rebuild for React Native

July 30, 2026
React Native OTA Updates: What You Can (and Can’t) Deploy Over the Air
Mobile

React Native OTA Updates: What You Can (and Can’t) Deploy Over the Air

May 28, 2026
Your phone drawer hides an app designed to “exploit developing brains”
Mobile

Your phone drawer hides an app designed to “exploit developing brains”

May 27, 2026
iPhone 16 has a secret charging upgrade Apple didn’t even mention
Mobile

iPhone 16 has a secret charging upgrade Apple didn’t even mention

May 26, 2026
Next Post
Municipal container park in Evere will close from September 1

Municipal container park in Evere will close from September 1

Discussion about this post

Subscribe To Our Newsletters

    Customer Support


    1251 Wilcrest Drive
    Houston, Texas
    77042 USA
    Call-832.795.1420
    e-mail – news@theinsightpost.com

    Subscribe To Our Newsletters

      Categories

      • Africa
      • Africa-East
      • African Sports
      • American Sports
      • Arts
      • Asia
      • Australia
      • Business
      • Business Asia
      • Business- Africa
      • Canada
      • Defense
      • Education
      • Egypt
      • Energy
      • Entertainment
      • Europe
      • European Soccer
      • Finance
      • Germany
      • Ghana
      • Health
      • Insight
      • International
      • Investing
      • Japan
      • Latest Headlines
      • Life & Living
      • Markets
      • Mobile
      • Movies
      • New Zealand
      • Nigeria
      • Politics
      • Scholarships
      • Science
      • South Africa
      • South America
      • Sports
      • Tech
      • Travel
      • UK
      • USA
      • Weather
      • World
      No Result
      View All Result

      Recent News

      US Navy to overhaul torpedo stockpile under new two-war strategy

      US Navy to overhaul torpedo stockpile under new two-war strategy

      July 30, 2026
      Free Cloud Computing Course | AWS Re/Start Program 

      Free Cloud Computing Course | AWS Re/Start Program 

      July 30, 2026
      Thirty Years Later

      Thirty Years Later

      July 30, 2026
      Announcing Codemagic Patch: an open-source CodePush rebuild for React Native

      Announcing Codemagic Patch: an open-source CodePush rebuild for React Native

      July 30, 2026
      • Home
      • Advertise With Us
      • About Us
      • Corporate
      • Consumer Rewards
      • Forum
      • Privacy Policy
      • Social Trends

      Theinsightpost ©2026 | All Rights Reserved. Theinsightpost is an Elnegy LLC company, registered in Texas, USA

      Welcome Back!

      Login to your account below

      Forgotten Password?

      Retrieve your password

      Please enter your username or email address to reset your password.

      Log In

      Add New Playlist

      We are using cookies to give you the best experience on our website.

      You can find out more about which cookies we are using or switch them off in .

      No Result
      View All Result
      • Home
      • Insight
      • Blog
      • Business
      • Entertainment
      • Health
      • Politics
      • Shop
        • Gift Shop
        • Value Shop
        • Store
        • Bargain Shop
        • Discount
      • Sports
      • Tech
      • Travel
      • USA
      • Video
      • World
        • Asia
        • Africa
        • South America
        • North America
        • Europe
        • Oceania

      Theinsightpost ©2026 | All Rights Reserved. Theinsightpost is an Elnegy LLC company, registered in Texas, USA

      The Insight Post
      Powered by  GDPR Cookie Compliance
      Privacy Overview

      This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.

      Strictly Necessary Cookies

      Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.

      Cookie Policy

      More information about our Cookie Policy