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
Authから始めるFirebaseの第一歩
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
980
僕が仕事を楽しむメンタルモデル
massyuu
0
590
自分のTwitter利用を振り返ってみる
massyuu
0
110
Vue×Nativeの開発を簡単にしたかったのです
massyuu
0
430
RealWorldHTTPを読んでみた
massyuu
1
600
私の知らないPythonの世界
massyuu
1
580
Pythonのアプリ開発にElectronという選択肢
massyuu
1
2.4k
Other Decks in Technology
See All in Technology
Alphaモジュール使っていいのかい!?いけないのかい!?どっちなんだいっ!?
watany
1
280
見守りエージェントを作ってみた(ローカルLLM + Hermes Agent)
happysamurai294
0
110
個人開発で育てる「大規模設計の苗床」 - AI時代の1人開発から始める業務への知識接続 / The Seedbed for Large-Scale Design - From AI-Era Solo Projects to Professional Knowledge
bitkey
PRO
1
280
はじめてのWDM
miyukichi_ospf
1
150
ZOZOTOWNの進化と信頼性を両立する負荷試験
zozotech
PRO
2
190
生成AI×AWS CDK×AWS FISで"振り返れる"ミニGameDayをつくろう
yoshimi0227
1
390
Gen3R: 3D Scene Generation Meets Feed-Forward Reconstruction
spatial_ai_network
0
130
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
380
最適な自走を最小限の支援で — M&Aで拡大する組織で少人数SREが挑んだ1年 / SRE NEXT 2026
genda
0
1.5k
ファミコンでPHPを動かす / PHP on the Famicom
tomzoh
2
400
SoccerMaster: A Vision Foundation Model for Soccer Understanding
kzykmyzw
0
140
カードゲーム作りが教えてくれた プロダクトオーナーシップ
moritamasami
0
110
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
3.1k
Git: the NoSQL Database
bkeepers
PRO
432
67k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Skip the Path - Find Your Career Trail
mkilby
1
170
The Cult of Friendly URLs
andyhume
79
6.9k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.6k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
180
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
420
The agentic SEO stack - context over prompts
schlessera
0
850
The Language of Interfaces
destraynor
162
27k
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 ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠