📖 Scenario: You are building a secure app that needs to verify users with custom authentication tokens. These tokens allow your app to trust users who sign in through your own system.
🎯 Goal: Create a Firebase Cloud Function that generates a custom authentication token for a user with a specific user ID and a role claim.
📋 What You'll Learn
Create a variable with the user ID
Create a configuration object with custom claims
Generate a custom token using Firebase Admin SDK
Return the generated token
💡 Why This Matters
🌍 Real World
Custom authentication tokens let your app securely identify users with roles or permissions you define. This is useful when you have your own user system outside Firebase.
💼 Career
Many cloud jobs require integrating custom authentication with Firebase or other identity providers to control user access securely.
Progress0 / 4 steps
1
Set up the user ID variable
Create a variable called uid and set it to the string 'user123'.
Firebase
Hint
Use const to declare the user ID variable.
2
Create custom claims configuration
Create a constant called customClaims and set it to an object with a key role and value 'admin'.
Firebase
Hint
Use an object literal to set the role claim.
3
Generate the custom authentication token
Use admin.auth().createCustomToken(uid, customClaims) to generate a custom token and assign it to a constant called customToken. Use await since this returns a promise.
Firebase
Hint
Remember to use await because createCustomToken returns a promise.
4
Return the generated token
Return the customToken from the function.
Firebase
Hint
Use the return keyword to send back the token.
Practice
(1/5)
1. What is the main purpose of Firebase custom authentication tokens?
easy
A. To store user data in Firebase Realtime Database
B. To sign in users from your own system to Firebase
C. To send notifications to users
D. To create Firebase projects automatically
Solution
Step 1: Understand the role of custom tokens
Custom tokens are used to authenticate users from an external system with Firebase.
Step 2: Identify the correct purpose
They allow users to sign in securely using tokens generated on your server.
Final Answer:
To sign in users from your own system to Firebase -> Option B
Quick Check:
Custom tokens = sign in users [OK]
Hint: Custom tokens = external user sign-in method [OK]
Common Mistakes:
Confusing tokens with data storage
Thinking tokens send notifications
Assuming tokens create projects
2. Which Firebase Admin SDK method is used to create a custom authentication token?
easy
A. admin.auth().createCustomToken(uid)
B. admin.database().createToken(uid)
C. firebase.auth().signInWithCustomToken(uid)
D. admin.storage().generateToken(uid)
Solution
Step 1: Identify the correct Admin SDK service
Custom tokens are created using the Authentication service, not database or storage.
Step 2: Match the correct method
The method to create a custom token is createCustomToken(uid) under admin.auth().
B. Incorrect method name, should be generateCustomToken
C. createCustomToken does not return a Promise
D. UID must be a string, not a number
Solution
Step 1: Check initialization of Firebase Admin SDK
The admin SDK must be initialized with admin.initializeApp() before use.
Step 2: Verify other parts
The UID '12345' is a valid string, createCustomToken returns a Promise, and method name is correct.
Final Answer:
Missing admin.initializeApp() call -> Option A
Quick Check:
Initialize admin SDK before calling methods [OK]
Hint: Always call admin.initializeApp() before using admin SDK [OK]
Common Mistakes:
Passing number instead of string UID
Assuming createCustomToken is synchronous
Using wrong method name
5. You want to add extra user info like role: 'admin' in a custom token. Which code snippet correctly adds this claim?
hard
A. admin.auth().setCustomUserClaims(uid, { role: 'admin' })
B. admin.auth().createCustomToken(uid).setClaims({ role: 'admin' })
C. admin.auth().createCustomToken(uid, { role: 'admin' })
D. admin.auth().createCustomToken(uid, { claims: { role: 'admin' } })
Solution
Step 1: Understand how to add extra claims in custom tokens
The createCustomToken method accepts a second argument with additional claims as a plain object.
Step 2: Evaluate each option
admin.auth().createCustomToken(uid, { role: 'admin' }) correctly passes extra claims as second argument. admin.auth().createCustomToken(uid).setClaims({ role: 'admin' }) is invalid chaining. admin.auth().setCustomUserClaims(uid, { role: 'admin' }) sets claims on user but not in token creation. admin.auth().createCustomToken(uid, { claims: { role: 'admin' } }) nests claims incorrectly.
Final Answer:
admin.auth().createCustomToken(uid, { role: 'admin' }) -> Option C
Quick Check:
Extra claims go as second argument in createCustomToken [OK]
Hint: Pass extra claims as second argument to createCustomToken [OK]
Common Mistakes:
Trying to chain setClaims on token creation
Using setCustomUserClaims instead of token claims
Nesting claims inside another object
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.