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 SDKadmin.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/awaitor 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.