Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Bringing Firebase Admin SDK to your server - Fi...
Search
Henry Lim
October 07, 2018
Technology
210
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
57
What's New in Web 2020
limhenry
0
650
Building a Better Website with Chrome DevTools
limhenry
0
190
Bringing your PWA to the Google Play Store with Trusted Web Activities
limhenry
0
1.2k
Building a better web for everyone - DevFest George Town 2018
limhenry
0
47
Building a better web for everyone - DevFest x BizFest Cebu 2018 / DevFest Bangkok 2018
limhenry
0
140
Bringing Firebase Admin SDK to your server - DevFest x BizFest Cebu 2018
limhenry
0
65
The Modern Web: State of the Union (I/O Extended '18 Kuala Lumpur)
limhenry
0
180
Building a better web with Web Components and Polymer 2.0
limhenry
0
59
Other Decks in Technology
See All in Technology
SRE歴2ヶ月でも開発6年の知見を活かして、チームで止まっていた環境改善を前に進めた話
a_ono
0
190
プロンプト_きのこカンファレンス2026_LT
yurufuwahealer
0
130
記録をかんたんに、提案をパーソナルに ── AIであすけんが目指すもの
oprstchn
0
130
10x Speed With QA Agent Platform - How we scaled adoption from individual effort to organizational capability
lycorptech_jp
PRO
0
130
AWS Blocks を触ってみた/first-tach-aws-blocks
fossamagna
2
140
5分でわかる Amazon Connect_20260608
hwangbyeonghun
0
180
本当の”仕事”を手放せる未来が見えた
mu7889yoon
0
220
勉強会企画をアプリで構造化してみた 〜そこで見えた、AIとの付き合い方〜 / I've structured a study group plan using an app.
pauli
0
300
「ちゃんとやっている」は独りよがりだった ― 不安に寄り添うインシデント対応へ / Towards incident response that addresses anxieties
chmikata
1
350
MySQL & MySQL HeatWave Report - June 2026
freshdaz
0
300
小さいから、全部わかる。— 常駐AI "xangi" のすすめ
sugupoko
0
250
事業価値を⽣み出すSREへ SREが担うべき意思決定の5層
kenta_hi
0
140
Featured
See All Featured
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
Into the Great Unknown - MozCon
thekraken
41
2.6k
Design in an AI World
tapps
1
260
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Building an army of robots
kneath
306
46k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
350
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Technical Leadership for Architectural Decision Making
baasie
3
430
30 Presentation Tips
portentint
PRO
1
340
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Abbi's Birthday
coloredviolet
3
8.5k
Done Done
chrislema
186
16k
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