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
Undocumented!? firebase
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Jumpei Takiyasu
March 08, 2019
Technology
0
310
Undocumented!? firebase
Jumpei Takiyasu
March 08, 2019
Tweet
Share
More Decks by Jumpei Takiyasu
See All by Jumpei Takiyasu
BIRのアーキテクチャと データ処理
juntaki
0
1.3k
BIRのアーキテクチャと 技術選定
juntaki
0
800
ROSでSLAMラジコンをつくる
juntaki
0
3.6k
6足歩行ロボットをつくった
juntaki
0
750
GoでAPIサーバをはやくつくる
juntaki
26
13k
3Dプリンタと4足歩行プロトタイプ
juntaki
0
6.7k
アンケートの集計システムを作った
juntaki
0
3.8k
Goならわかる Linuxのメモリ管理
juntaki
13
6.2k
社内勉強会の管理ツール Sugoi Meetupをつくった
juntaki
0
830
Other Decks in Technology
See All in Technology
日本の85%が使う公共SaaSは、どう育ったのか
taketakekaho
1
140
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
1.6k
Webhook best practices for rock solid and resilient deployments
glaforge
1
270
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
370
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.8k
システムのアラート調査をサポートするAI Agentの紹介/Introduction to an AI Agent for System Alert Investigation
taddy_919
2
1.9k
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
0
330
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
870
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
220
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
3
440
Introduction to Bill One Development Engineer
sansan33
PRO
0
360
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.5k
Featured
See All Featured
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
120
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
110
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2k
Context Engineering - Making Every Token Count
addyosmani
9
650
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
230
The Curse of the Amulet
leimatthew05
1
8.3k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
110
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
910
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
90
Google's AI Overviews - The New Search
badams
0
900
Transcript
Undocumented!? Firebase Jumpei Takiyasu @juntaki M3, Inc.
name <- "Jumpei Takiyasu" company <- "M3, Inc." web <-
"https://juntaki.com" Me
Firebaseははまりどころ多め あんまりドキュメントや情報が無い
今回やりたかったこと エムスリー:ファイルをアップロード&サイトURLお知らせ クライアント: URLアクセス→アカウント作成→ファイルダウンロード 関係ない人:アカウント作成するも、ログイン画面から進めない ファイル送信時点ではアカウントがないので、次のようにした • メールアドレスにファイルを紐付ける • ファイルを送られてない人はそもそも入ることすらできない
Hostingでアクセス制限したい IPアドレス制限(QA環境) Auth通った人だけ →できない
AppEngine + Admin SDKで静的ファイル配信 IPアドレス制限 →ファイヤウォールルールで設定 Auth通った人だけ →CookieでTokenIDを渡して、Admin SDKで検証 オーバースペック感はある
※ここはGoで書きました
FirestoreのクエリがPermission denied 一覧は全件取得しておけば、権限があるやつだけくるだろ〜 →できない
セキュリティルールはフィルタではない 権限があるものだけヒットするようにクエリを出さないといけない
メール確認したのに、emailVerified == false • セキュリティルールでファイルのemailとアカウントの一致をチェック • emailVerified == trueも条件にせざるを得ない メール確認のURLを踏んでも、Permission
denied しかも、しばらくするとアクセスが通るという謎の現象
Firebaseにクエリを投げる前にGetIdToken(true)しましょう(強制再取得) Token取得時にどうだったのかが大事 GetIdToken() emailVerified ==false (2hours) メール確認 emailVerified ==false Firebase側の状態
フロントエンドの状態 emailVerified ==true Firestoreクエリ Token側がfalseだ から権限はない 時間 時間
Storageにアップロードしたファイルが壊れる アップロードは成功するし、サイズもあるのに、ファイルが壊れる
カスタムメタデータ名に”@”はダメ どこにも書いてない!(メールアドレスをキーにしたかった) →ハッシュ値にすることで回避
Storageのダウンロードログ残したい →できない Cloud functionsでもトリガは4つだけ、Cloud Audit Loggingも対象外 • アーカイブ • 削除
• 作成 • メタデータ変更
解決策:操作ログをDBに書く じゃあ、”log”ってCollection作って、JavaScrpitから書くようにして・・ →できない
“log”というコレクションは作れるが使えない 解決策:なんかそれ以外の名前にしましょう
まとめ いろいろハマったが、結果的に2日もかからずに新しいサービスができた (QA・デザイン込でも5人日程度) Firebaseは便利
Thank you! Jumpei Takiyasu @juntaki M3, Inc. https://juntaki.com