0
0
FirebaseHow-ToBeginner · 3 min read

How to Use Firebase Admin SDK in Cloud Functions

To use the Firebase Admin SDK in a Firebase Cloud Function, first import and initialize it with admin.initializeApp(). Then, use admin to access Firebase services like authentication or database inside your function code.
📐

Syntax

Use the Firebase Admin SDK by importing it and initializing it once in your Cloud Function file. Then call admin.initializeApp() to set up the SDK. After that, use admin to access Firebase services like Firestore, Authentication, or Realtime Database.

  • const admin = require('firebase-admin'); - imports the Admin SDK
  • admin.initializeApp(); - initializes the SDK with default credentials
  • Use admin.auth(), admin.firestore(), etc. to interact with Firebase services
javascript
const admin = require('firebase-admin');

admin.initializeApp();

exports.myFunction = (req, res) => {
  // Use admin SDK here
};
💻

Example

This example shows a simple HTTPS Cloud Function that uses the Admin SDK to list all users in Firebase Authentication.

javascript
const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp();

exports.listUsers = functions.https.onRequest(async (req, res) => {
  try {
    const listUsersResult = await admin.auth().listUsers(1000);
    const users = listUsersResult.users.map(userRecord => ({
      uid: userRecord.uid,
      email: userRecord.email
    }));
    res.status(200).json({ users });
  } catch (error) {
    res.status(500).send('Error listing users: ' + error.message);
  }
});
Output
{"users":[{"uid":"some-uid","email":"user@example.com"}]}
⚠️

Common Pitfalls

Common mistakes when using the Admin SDK in Firebase Functions include:

  • Not calling admin.initializeApp() before using the SDK, causing errors.
  • Initializing the Admin SDK multiple times in the same file, which can cause conflicts.
  • Using client SDK methods instead of Admin SDK methods inside functions.
  • Not handling async/await properly when calling Admin SDK methods.
javascript
/* Wrong: Missing initialization */
const admin = require('firebase-admin');

exports.func = (req, res) => {
  admin.auth().listUsers(1000).then(...); // Error: admin not initialized
};

/* Right: Initialize once at top */
const admin = require('firebase-admin');
admin.initializeApp();

exports.func = async (req, res) => {
  const listUsersResult = await admin.auth().listUsers(1000);
  res.send(listUsersResult);
};
📊

Quick Reference

Remember these key points when using Firebase Admin SDK in Cloud Functions:

  • Import with require('firebase-admin')
  • Initialize once with admin.initializeApp()
  • Use admin.auth(), admin.firestore(), etc. to access services
  • Handle async calls with async/await or promises
  • Deploy functions with firebase deploy --only functions

Key Takeaways

Always call admin.initializeApp() once before using the Admin SDK in your function.
Use admin.auth(), admin.firestore(), etc. to access Firebase services inside functions.
Handle asynchronous Admin SDK calls with async/await or promises to avoid errors.
Avoid initializing the Admin SDK multiple times in the same file.
Deploy your Cloud Functions using the Firebase CLI after coding.