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
Authから始めるFirebaseの第一歩
Search
massyuu
February 21, 2019
Technology
1.5k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Authから始めるFirebaseの第一歩
massyuu
February 21, 2019
More Decks by massyuu
See All by massyuu
多様な事業ドメインのクリエイターへ 価値を届けるための営みについて
massyuu
1
1k
僕が仕事を楽しむメンタルモデル
massyuu
0
630
自分のTwitter利用を振り返ってみる
massyuu
0
110
Vue×Nativeの開発を簡単にしたかったのです
massyuu
0
450
RealWorldHTTPを読んでみた
massyuu
1
610
私の知らないPythonの世界
massyuu
1
590
Pythonのアプリ開発にElectronという選択肢
massyuu
1
2.4k
Other Decks in Technology
See All in Technology
Draft AIエージェントの トークン消費を最小化する 8つの原則
kinopeee
6
1.8k
DevelopersIO 2026 Tokyo 現時点の衛星通信サービスの現状を整理してみる
maroon1st
0
320
DevelopersIO2026 -バックアップは“消されないこと”が9割-
yoshida0129
0
430
【Oracle AI SPOTLIGHT ウェビナー】事例から見る!なぜOCIが選ばれたのか ― AI時代のクラウド戦略を紐解く ―
oracle4engineer
PRO
1
120
ガチで放置できるClaude Code実行環境の作り方.pdf
lamaglama39
5
9.9k
ひとりで始めた AI駆動開発、チームに広げて何が変わったのか
kenichiodo
0
130
OneLakeをデータソースにした AI Search(Foundry IQ)の ライフサイクル管理
ryuseiiida
0
130
AWS DevOps Agentはどこまで任せられるか 〜機能の現在地と、機能拡張の実践〜
nyankotaro
0
270
200人の配信コメント、 全部Jevが仕分けます 〜 マサカリガードを作ってみた 〜
katayamatg
1
360
How we choose session proposals
kawaguti
PRO
1
180
(swiftc) NonCopyableとライフタイム修飾子
teamhimeh
0
150
"計画的無茶振り"を通してAIネイティブ世代の新人を育てる
subroh0508
1
120
Featured
See All Featured
Designing Powerful Visuals for Engaging Learning
tmiket
1
620
Embracing the Ebb and Flow
colly
88
5.2k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
440
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
800
The Invisible Side of Design
smashingmag
301
52k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
320
New Earth Scene 8
popppiees
4
2.7k
Evolving SEO for Evolving Search Engines
ryanjones
0
330
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
360
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
530
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Transcript
"VUI͔Β࢝ΊΔ'JSFCBTFͷୈҰา 'VLVPLB'JSFCBTF !NBTTZVV
ࣗݾհ ӹాɹ༞ีˏNBTTZVV 4FOUSFTFBV*OD αʔόʔαΠυ͔Β͋͛Τϯδχϟʔ UXJUUFS!NBTTZVV
ࠓͷ͓ ΈΜͳେ͖Ϣʔβʔೝূʹ͍ͭͯ
'JSFCBTF"VUIFOUJDBUJPO • 'JSFCBTF͕ఏڙ͍ͯ͠ΔϢʔβʔೝূػೳ • ΞϓϦέʔγϣϯͷϢʔβʔΛ؆୯ʹೝূɾࣝผͯ͘͠ΕΔ • 4%,Λར༻͢Δ͔ɺ6*ϥΠϒϥϦʹΑΓ؆୯ʹ࣮͢Δ͜ͱ͕Մೳ • ༷ʑͳํ๏ͰͷೝূΛఏڙՄೳ •
ϝʔϧΞυϨεʢˍύεϫʔυʣ • ి൪߸ • 4/4ೝূʢ5XJUUFSɺ'BDFCPPLɺ(PPHMFɺ(JU)VCͳͲʣ • ύεϫʔυͳͲࣗલͷ%#ʹอଘ͠ͳ͍Ͱ͍͍ͷ͕ྑ͖ • ݸਓతʹҰ൪͖͔͠Εͳ͍αʔϏε
'JSFCBTF4%,"VUIFOUJDBUJPO • 4%,ͱͯ͠ఏڙ͞ΕΔೝূػೳΛඞཁʹԠͯࣗ͡લͰΈࠐΜͰ͍͘ελΠϧ • 6*ؚΊͯࣗલͰ࡞ΔͷͰɺطଘγεςϜʹՃ͢Δͱ͔ͳΒͬͪ͜ͷํ͕Γ͍͢ʁ • "OESPJEɺJ04ɺ8&#ʢ+4ʣͷଞɺ$ 6OJUZͰར༻Մೳ • ి൪߸ೝূ$
6OJUZΛআ͘ • 8&#ͰΑ͘ݟ͔͚Δ'JSFCBTF"VUIFOUJDBUJPO
'JSFCBTF6*"VUI • ެ͓ࣜ͢͢Ί • 6*ΛؚΊͨೝূػೳΛఏڙ • 6*ఏڙͯ͘͠ΕΔͷͰϩάΠϯपΓͷॲཧΛ·Δͬͱ'JSFCBTFʹͤΔ͜ͱ͕Ͱ͖Δ • (JU)VCʢ8FC༻ϦϙδτϦɾσϞϖʔδʣ •
IUUQTHJUIVCDPNGJSFCBTFGJSFCBTFVJXFC • IUUQTGJSVJEFNPBDGJSFCBTFBQQDPN • ެࣜʹ"OESPJEɺJ04ɺ8&#ʢ+4ʣͰར༻Մೳͱ͍ͯ͠Δ • 3FBDU"OHVMBS༻ʹϥοϓ͞ΕͨϦϙδτϦ͋ͬͨΓ
8&#ͷ"VUIΛࢼͯ͠ΈΔ
ͳʹΛ͢Δ͔ • 7VFKTͰϩάΠϯ͢Δ͚ͩͷը໘Λͭ͘Δ • &NBJM • 5XJUUFSΞΧϯτ • (PPHMFΞΧϯτ •
ϩάΠϯϢʔβʔͷใ4/4ͷొใ͕͋ΕͦͪΒΛར༻͢Δ
'JSFCBTFͷઃఆ • ϓϩδΣΫτΛ࡞Δ • ίϯιʔϧ͔Β৽͍͠ϓϩδΣΫτΛՃ • ΞϓϦʹεχϖοτΛίϐϖͯ͠'JSFCBTFΛՃ • ϩάΠϯํ๏Λઃఆ •
ࠓճ&NBJMɺ5XJUUFSɺ(PPHMFΛ༗ޮԽ • ࣄલʹ5XJUUFS"QQΛ࡞͓ͯ͘͠
5XJUUFSઃఆͷิ 5XJUUFS"QQͷΩʔ ใΛ͜͜ʹొ ͜ͷίʔϧόοΫ 63-5XJUUFS"QQ ଆʹొ͢Δ
4%,Ͱͷ࣮
GJSFCBTFͷϞδϡʔϧΛ࡞Δ 'JSFCBTFͷઃఆૢ࡞ΛϞδϡʔϧʹ·ͱΊ͓ͯ͘ // Initialize Firebase const config =
{ apiKey: ‘apiKey wo Kokoni input', authDomain: 'vue-fb-auth.firebaseapp.com', databaseURL: 'https://vue-fb-auth.firebaseio.com', projectId: 'vue-fb-auth', storageBucket: ‘', messagingSenderId: '813627810276' } export default { // FirebaseॳظԽ init() { firebase.initializeApp(config) firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION) }, // GoogleϩάΠϯॲཧ googleLogin() { // GoogleϩάΠϯͷॲཧ༰Λ͜͜ʹ }, ͱ͔ ͳͲͳͲ
ϩάΠϯɾϩάΞτͷهड़ ྫ͑5XJUUFSϩάΠϯΛ࣮͢Δ߹ͷهड़͜Ε͚ͩ ϩάΞτͷ࣮ ͰऴΘΔͷͰΊͬͪΌ؆୯ ͋ͱ͜ΕΛίϯϙʔωϯτଆͰར༻͢Δ͚ͩ // ϩάΞτॲཧ logout()
{ firebase.auth().signOut() }, // TwitterϩάΠϯॲཧ twitterLogin() { const Provider = new firebase.auth.TwitterAuthProvider() firebase.auth().signInWithPopup(Provider) },
0, 4%,Ͱ؆୯ʹ࡞ΕΔͷΘ͔ͬͨ
6*"VUIͰͷ࣮
GJSFCBTF6*ͷϞδϡʔϧΛ࡞Δ 'JSFCBTFͱ'JSFCBTF6*ͷઃఆૢ࡞ΛϞδϡʔϧʹ·ͱΊ͓ͯ͘ 'JSFCBTFͷઃఆ4%,Λ͏࣌ͱಉ༷ // Initialize Firebase const config
= { apiKey: ‘apiKey wo Kokoni input', authDomain: 'vue-fb-auth.firebaseapp.com', databaseURL: 'https://vue-fb-auth.firebaseio.com', projectId: 'vue-fb-auth', storageBucket: ‘', messagingSenderId: '813627810276' }
GJSFCBTF6*ͷϞδϡʔϧΛ࡞Δ 'JSFCBTF6*ͷઃఆ͜Μͳײ͡ const uiConfig = { // ϙοϓΞοϓදࣔ
signInFlow: 'popup', // ϩάΠϯޭ࣌ͷΓURL signInSuccessUrl: '/auth', // ϩάΠϯͷํ๏ signInOptions: [ firebase.auth.GoogleAuthProvider.PROVIDER_ID, firebase.auth.TwitterAuthProvider.PROVIDER_ID, firebase.auth.EmailAuthProvider.PROVIDER_ID ], // ϦμΠϨΫτͷઃఆ callbacks: { signInSuccessWithAuthResult: () => { return true } } } ͦͷଞʹ͍͔ͭ͘Φϓγϣϯͷઃఆ͕͋Γ·͢
GJSFCBTF6*ͷϏϡʔ 'JSFCBTF6*ͷϩάΦϯը໘Λݺͼग़͢ίʔυ͜Ε͚ͩ <div id="firebaseui-auth-container"></div> ɹɹˢ ɹ͜Ε͕ ɹɹ͜͏ͳΔɹˠ
ͪΐͬͱσϞ
·ͱΊͱॴײ • 4%,ɺ6*ͷ͍ͣΕ࣮ࣗମ؆୯ • ͬ͘͞ͱϩάΠϯॲཧΛ࡞Γ͍ͨͳΒ6*͏ͷ͋Γ • ϨϯμϦϯάʹएׯͷϥά͕͋ΔͷͰɺݟͤํ͔ͬ͠Γͱ •
ຊޠͷใ4%,ͷํ͕ଟΊΈ͍ͨ • αʔϏεͷσβΠϯʹدͤΔͳΒ4%,͏ํ͕ແͳͷ͔ͳ • ͋ͱɺ3VMFTͷઃఆେࣄ
ऴ ੍࡞ɾஶ࡞ NBTTZVV ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠