Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Bringing Firebase Admin SDK to your server - Fi...
Search
Henry Lim
October 07, 2018
Technology
220
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Bringing Firebase Admin SDK to your server - Firebase Dev Day Thailand 2018
Henry Lim
October 07, 2018
More Decks by Henry Lim
See All by Henry Lim
Building Malaysia Vaccine Tracker Twitter Bot
limhenry
0
67
What's New in Web 2020
limhenry
0
660
Building a Better Website with Chrome DevTools
limhenry
0
210
Bringing your PWA to the Google Play Store with Trusted Web Activities
limhenry
0
1.3k
Building a better web for everyone - DevFest George Town 2018
limhenry
0
57
Building a better web for everyone - DevFest x BizFest Cebu 2018 / DevFest Bangkok 2018
limhenry
0
150
Bringing Firebase Admin SDK to your server - DevFest x BizFest Cebu 2018
limhenry
0
81
The Modern Web: State of the Union (I/O Extended '18 Kuala Lumpur)
limhenry
0
190
Building a better web with Web Components and Polymer 2.0
limhenry
0
70
Other Decks in Technology
See All in Technology
20260930_Gemma4_Hands-on
tsho
0
210
SQL Server 2025 最適化されたロック
odashinsuke
0
120
カンファレンスに参加した後の浮遊感とセルフケア
pauli
0
290
Swap and Memory Reclaim - Squeezing Out More RAM
ennael
PRO
1
1.5k
OSC2026on_the-world-is-waiting-for-your-voice.pdf
naruoga
0
190
雪かき部 #7 もう怖くない!SELECT文!
foursue
0
270
形式手法を使って仕様をコーディングしよう
mikanichinose
0
160
並行性の問題を防げ!実践トランザクション入門
occhi
0
120
Apache Iceberg が拓く AI 時代のオープンレイクハウス
tomtanaka
0
210
Execution in the Kingdom of Agents: Reflections on Abstraction and Complexity
bcantrill
0
670
ビジネスを止めない技術的負債の返済のための戦略とその手法 - 技術的負債と向き合う / Complexity and Simplicity
soudai
PRO
2
370
大阪オフィスに Unitree Go2 がやってきたので Physical AI やってみた
dafujii
0
220
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Exploring anti-patterns in Rails
aemeredith
4
520
How to build a perfect <img>
jonoalderson
1
6.1k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
580
エンジニアに許された特別な時間の終わり
watany
109
250k
Ruling the World: When Life Gets Gamed
codingconduct
0
380
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
The agentic SEO stack - context over prompts
schlessera
0
950
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Paper Plane
katiecoart
PRO
4
53k
How Software Deployment tools have changed in the past 20 years
geshan
2
34k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
410
Transcript
October 7th, 2018 at Glowfish Sathorn Bringing Firebase Admin SDK
to your server Henry Lim @henrylim96
#FirebaseDevDay สวัสดี ครับ, ผมชื่อ เฮนรี่ ลิม
#FirebaseDevDay
None
#FirebaseDevDay Firebase by Platform • Android • iOS • Web
• Flutter • And more ...
None
#FirebaseDevDay Firebase Admin SDK
#FirebaseDevDay Firebase has got you covered Firebase provides a suite
of SDKs, called Admin SDKs, for developing back-end software that interact with Firebase.
#FirebaseDevDay Firebase Admin SDKs Access Firebase from … • Servers
owned or managed by app developers • Cloud IaaS and PaaS environments • Serverless platforms
#FirebaseDevDay What can you do with Firebase Admin SDK
Firebase Admin SDK Features Feature Node.js Java Python Go C#
Custom Token Minting ✓ ✓ ✓ ✓ ✓ ID Token Verification ✓ ✓ ✓ ✓ ✓ User Management ✓ ✓ ✓ ✓ Control Access With Custom Claims ✓ ✓ ✓ ✓ Refresh Token Revocation ✓ ✓ ✓ ✓ Import Users ✓ ✓ ✓ ✓ Session Cookie Management ✓ ✓ ✓ Realtime Database ✓ ✓ ✓ ✓ Cloud Messaging ✓ ✓ ✓ ✓ Manage Topic Subscriptions ✓ ✓ ✓ ✓ Cloud Storage ✓ ✓ ✓ ✓ Cloud Firestore ✓ ✓ ✓ ✓
None
#FirebaseDevDay Introducing Fire Tomyam firetomyam.firebaseapp.com
#FirebaseDevDay
#FirebaseDevDay
#FirebaseDevDay
#FirebaseDevDay Add the Firebase Admin SDK
// Download the SDK (NPM) npm install firebase-admin --save
#FirebaseDevDay Initialize the Firebase Admin SDK
// Initialize the SDK const admin = require('firebase-admin'); const serviceAccount
= require('path/to/serviceAccountKey.json'); admin.initializeApp({ credential: admin.credential.cert(serviceAccount), databaseURL: 'https://<DATABASE_NAME>.firebaseio.com' });
None
#FirebaseDevDay
// Initialize the SDK // Cloud Functions for Firebase const
functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(functions.config().firebase);
#FirebaseDevDay A custom permissions model We want to define two
classes of users - admin and regular users.
#FirebaseDevDay Control Access with Custom Claims and Security Rules
// Firebase Realtime Database Rules { "rules": { "items": {
".read": true, ".write": "auth.token.admin === true", } } }
#FirebaseDevDay
document.querySelector('.form').addEventListener('submit', event => { event.preventDefault(); database.ref('admin').push(document.querySelector('.form #email').value) .then(() => {
alert('Added successfully!'); window.location.replace('/'); }) .catch(error => { alert(error); }) });
exports.newAdmin = functions.database.ref(`admin/{email}`) .onCreate((snapshot, context) => { const email =
context.params.email; admin.auth().getUserByEmail(email) .then(userRecord => { return userRecord.uid; }) .then(uid => { return admin.auth().setCustomUserClaims(uid, {admin: true}); }) .catch(error => { console.log(error); }) })
exports.newAdmin = functions.database.ref(`admin/{email}`) .onCreate((snapshot, context) => { const email =
context.params.email; admin.auth().getUserByEmail(email) .then(userRecord => { return userRecord.uid; }) .then(uid => { return admin.auth().setCustomUserClaims(uid, {admin: true}); }) .catch(error => { console.log(error); }) })
// Firebase Realtime Database Rules { "rules": { "items": {
".read": true, ".write": "auth.token.admin === true", } } }
#FirebaseDevDay
#FirebaseDevDay Send Messages to Topics
#FirebaseDevDay
var messaging = firebase.messaging(); var database = firebase.database(); if ('serviceWorker'
in navigator) { window.addEventListener('load', () => { navigator.serviceWorker.register('/firebase-messaging-sw.js') .then((registration) => { messaging.useServiceWorker(registration); }) .then(() => { return messaging.requestPermission(); }) .then(() => { return messaging.getToken(); }) .then((token) => { database.ref('notification/' + token).set(true); }) .catch((err) => { console.log('ServiceWorker registration failed: ', err); }); }); };
var messaging = firebase.messaging(); var database = firebase.database(); if ('serviceWorker'
in navigator) { window.addEventListener('load', () => { navigator.serviceWorker.register('/firebase-messaging-sw.js') .then((registration) => { messaging.useServiceWorker(registration); }) .then(() => { return messaging.requestPermission(); }) .then(() => { return messaging.getToken(); }) .then((token) => { database.ref('notification/' + token).set(true); }) .catch((err) => { console.log('ServiceWorker registration failed: ', err); }); }); };
exports.sendNotification = functions.database.ref(`items/{itemId}`) .onCreate((snapshot, context) => { const data =
snapshot.val(); const msg = admin.messaging.Message = { topic: 'new-restaurant', notification: { title: 'New Restaurant in FireTomyam', body: `We just added "${data.name}" to our collection. Enjoy!` } } return admin.messaging().send(msg) .then((resp) => { return resp; }) .catch(() => {}) })
exports.sendNotification = functions.database.ref(`items/{itemId}`) .onCreate((snapshot, context) => { const data =
snapshot.val(); const msg = admin.messaging.Message = { topic: 'new-restaurant', notification: { title: 'New Restaurant in FireTomyam', body: `We just added "${data.name}" to our collection. Enjoy!` } } return admin.messaging().send(msg) .then((resp) => { return resp; }) .catch(() => {}) })
#FirebaseDevDay
#FirebaseDevDay What else you can do with Firebase Admin SDK
#FirebaseDevDay
#FirebaseDevDay
Thank You! #FirebaseDevDay Helpful resources fb.com/FirebaseThailand fb.com/groups/FirebaseDevTH medium.com/FirebaseThailand Henry Lim
@henrylim96