Bird
Raised Fist0
Firebasecloud~30 mins

Firebase Admin SDK (Node.js) - Mini Project: Build & Apply

Choose your learning style10 modes available
Firebase Admin SDK (Node.js) Basic Setup and User Management
📖 Scenario: You are building a backend service that manages users in a Firebase project. You will set up the Firebase Admin SDK in Node.js, configure it with service account credentials, create a new user, and then update that user's display name.
🎯 Goal: Set up Firebase Admin SDK in Node.js, initialize it with service account credentials, create a user with email and password, and update the user's display name.
📋 What You'll Learn
Create a variable admin by requiring firebase-admin
Initialize Firebase Admin SDK with a service account object called serviceAccount
Create a new user with email user@example.com and password securePass123
Update the created user's display name to John Doe
💡 Why This Matters
🌍 Real World
Backend services often need to manage users securely. Firebase Admin SDK allows server-side user management like creating, updating, and deleting users.
💼 Career
Understanding Firebase Admin SDK is useful for backend developers working with Firebase projects, enabling secure user management and integration with other backend logic.
Progress0 / 4 steps
1
Setup Firebase Admin SDK import and service account
Create a constant called admin by requiring the firebase-admin module. Then create a constant called serviceAccount and assign it the object { projectId: 'my-firebase-project', clientEmail: 'firebase-admin@my-firebase-project.iam.gserviceaccount.com', privateKey: '-----BEGIN PRIVATE KEY-----\nABC123\n-----END PRIVATE KEY-----\n' }.
Firebase
Hint

Use require('firebase-admin') to import the SDK. The serviceAccount is a plain object with keys projectId, clientEmail, and privateKey.

2
Initialize Firebase Admin SDK
Initialize Firebase Admin SDK by calling admin.initializeApp with an object that has a credential property set to admin.credential.cert(serviceAccount).
Firebase
Hint

Use admin.initializeApp with credential: admin.credential.cert(serviceAccount) to initialize the SDK.

3
Create a new user with email and password
Use admin.auth().createUser with an object containing email: 'user@example.com' and password: 'securePass123'. Assign the returned promise to a constant called userRecordPromise.
Firebase
Hint

Call admin.auth().createUser with the email and password inside an object. Assign the result to userRecordPromise.

4
Update the user's display name
Use userRecordPromise.then to get the userRecord. Inside the then callback, call admin.auth().updateUser with userRecord.uid and an object setting displayName to 'John Doe'.
Firebase
Hint

Use userRecordPromise.then to get the user record, then call admin.auth().updateUser with the user's UID and the new display name.

Practice

(1/5)
1. What is the primary purpose of the Firebase Admin SDK in Node.js?
easy
A. To build user interfaces for Firebase apps
B. To securely manage Firebase services from a server environment
C. To run Firebase apps directly in the browser
D. To replace Firebase client SDK on mobile devices

Solution

  1. Step 1: Understand Firebase Admin SDK role

    The Admin SDK is designed for server-side use to manage Firebase services securely.
  2. Step 2: Differentiate from client SDKs

    Client SDKs run on user devices for app interaction, while Admin SDK runs on servers for management tasks.
  3. Final Answer:

    To securely manage Firebase services from a server environment -> Option B
  4. Quick Check:

    Admin SDK = server management [OK]
Hint: Admin SDK is for backend server tasks, not frontend apps [OK]
Common Mistakes:
  • Confusing Admin SDK with client SDK
  • Thinking Admin SDK runs in browsers
  • Assuming Admin SDK builds UI
2. Which of the following is the correct way to initialize the Firebase Admin SDK in Node.js using a service account JSON file named serviceAccountKey.json?
easy
A. const admin = require('firebase-admin'); admin.initializeApp({credential: admin.credential.cert(require('./serviceAccountKey.json'))});
B. const admin = require('firebase-admin'); admin.initializeApp({serviceAccount: 'serviceAccountKey.json'});
C. const admin = require('firebase-admin'); admin.initializeApp({credential: admin.credential.applicationDefault()});
D. const admin = require('firebase-admin'); admin.initializeApp({credential: admin.credential.cert(serviceAccountKey.json)});

Solution

  1. Step 1: Load service account JSON correctly

    The service account JSON must be imported using require to pass the object, not a string path.
  2. Step 2: Use admin.credential.cert with the JSON object

    Pass the imported JSON object to admin.credential.cert for proper initialization.
  3. Final Answer:

    const admin = require('firebase-admin'); admin.initializeApp({credential: admin.credential.cert(require('./serviceAccountKey.json'))}); -> Option A
  4. Quick Check:

    Use require() to load JSON for cert [OK]
Hint: Use require() to load JSON, not a string path [OK]
Common Mistakes:
  • Passing file path string instead of JSON object
  • Using applicationDefault() when service account is needed
  • Incorrect property name like 'serviceAccount'
3. Given the following Node.js code using Firebase Admin SDK, what will be the output if the user with UID 'user123' exists?
const admin = require('firebase-admin');
admin.initializeApp();

admin.auth().getUser('user123')
  .then(userRecord => console.log(userRecord.uid))
  .catch(error => console.log('Error:', error.message));
medium
A. user123
B. Error: User not found
C. undefined
D. null

Solution

  1. Step 1: Understand getUser() behavior

    getUser() returns a Promise resolving to a user record if the user exists.
  2. Step 2: Check the then() callback output

    The code logs userRecord.uid, which will be 'user123' if the user exists.
  3. Final Answer:

    user123 -> Option A
  4. Quick Check:

    getUser() returns user data, logs UID [OK]
Hint: getUser() returns user info; log uid to see user ID [OK]
Common Mistakes:
  • Assuming getUser() returns error if user exists
  • Expecting undefined or null instead of UID
  • Not handling Promise correctly
4. Identify the error in the following Firebase Admin SDK Node.js code snippet:
const admin = require('firebase-admin');
admin.initializeApp({
  credential: admin.credential.cert(serviceAccountKey.json)
});

admin.auth().createUser({
  email: 'user@example.com',
  password: 'secret123'
}).then(userRecord => console.log(userRecord.uid));
medium
A. initializeApp() cannot accept credential property
B. Password must be at least 10 characters
C. createUser() requires a displayName field
D. The service account JSON file path should be required, not passed as a string

Solution

  1. Step 1: Check initialization of credential

    admin.credential.cert() expects a JSON object, not a string path. The file must be loaded with require().
  2. Step 2: Validate other parameters

    Password length and displayName are optional or valid; initializeApp() accepts credential property.
  3. Final Answer:

    The service account JSON file path should be required, not passed as a string -> Option D
  4. Quick Check:

    Use require() to load JSON for cert [OK]
Hint: Load JSON with require(), not string path [OK]
Common Mistakes:
  • Passing string path instead of JSON object
  • Assuming password length error
  • Thinking displayName is mandatory
5. You want to send a push notification to a device using Firebase Admin SDK in Node.js. Which sequence of steps correctly applies to achieve this?
hard
A. Use Firebase client SDK to send notification directly from server without Admin SDK
B. Initialize Admin SDK with credentials, call admin.auth().sendNotification(token, message), then handle response
C. Initialize Admin SDK with credentials, build a message object with token and notification, then call admin.messaging().send(message)
D. Initialize Admin SDK without credentials, build message, then call admin.database().send(message)

Solution

  1. Step 1: Initialize Admin SDK properly

    Admin SDK must be initialized with credentials to access Firebase services securely.
  2. Step 2: Create message object and send

    Build a message with device token and notification details, then use admin.messaging().send() to send it.
  3. Final Answer:

    Initialize Admin SDK with credentials, build a message object with token and notification, then call admin.messaging().send(message) -> Option C
  4. Quick Check:

    Use admin.messaging().send() with message object [OK]
Hint: Use admin.messaging().send() with message object and token [OK]
Common Mistakes:
  • Using auth() instead of messaging() for notifications
  • Trying to send without initializing SDK
  • Using database() to send notifications
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard