Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Undocumented!? Firebase Jumpei Takiyasu @juntaki M3, Inc.
Slide 2
Slide 2 text
name <- "Jumpei Takiyasu" company <- "M3, Inc." web <- "https://juntaki.com" Me
Slide 3
Slide 3 text
Firebaseははまりどころ多め あんまりドキュメントや情報が無い
Slide 4
Slide 4 text
今回やりたかったこと エムスリー:ファイルをアップロード&サイトURLお知らせ クライアント: URLアクセス→アカウント作成→ファイルダウンロード 関係ない人:アカウント作成するも、ログイン画面から進めない ファイル送信時点ではアカウントがないので、次のようにした ● メールアドレスにファイルを紐付ける ● ファイルを送られてない人はそもそも入ることすらできない
Slide 5
Slide 5 text
Hostingでアクセス制限したい IPアドレス制限(QA環境) Auth通った人だけ →できない
Slide 6
Slide 6 text
AppEngine + Admin SDKで静的ファイル配信 IPアドレス制限 →ファイヤウォールルールで設定 Auth通った人だけ →CookieでTokenIDを渡して、Admin SDKで検証 オーバースペック感はある ※ここはGoで書きました
Slide 7
Slide 7 text
FirestoreのクエリがPermission denied 一覧は全件取得しておけば、権限があるやつだけくるだろ〜 →できない
Slide 8
Slide 8 text
セキュリティルールはフィルタではない 権限があるものだけヒットするようにクエリを出さないといけない
Slide 9
Slide 9 text
メール確認したのに、emailVerified == false ● セキュリティルールでファイルのemailとアカウントの一致をチェック ● emailVerified == trueも条件にせざるを得ない メール確認のURLを踏んでも、Permission denied しかも、しばらくするとアクセスが通るという謎の現象
Slide 10
Slide 10 text
Firebaseにクエリを投げる前にGetIdToken(true)しましょう(強制再取得) Token取得時にどうだったのかが大事 GetIdToken() emailVerified ==false (2hours) メール確認 emailVerified ==false Firebase側の状態 フロントエンドの状態 emailVerified ==true Firestoreクエリ Token側がfalseだ から権限はない 時間 時間
Slide 11
Slide 11 text
Storageにアップロードしたファイルが壊れる アップロードは成功するし、サイズもあるのに、ファイルが壊れる
Slide 12
Slide 12 text
カスタムメタデータ名に”@”はダメ どこにも書いてない!(メールアドレスをキーにしたかった) →ハッシュ値にすることで回避
Slide 13
Slide 13 text
Storageのダウンロードログ残したい →できない Cloud functionsでもトリガは4つだけ、Cloud Audit Loggingも対象外 ● アーカイブ ● 削除 ● 作成 ● メタデータ変更
Slide 14
Slide 14 text
解決策:操作ログをDBに書く じゃあ、”log”ってCollection作って、JavaScrpitから書くようにして・・ →できない
Slide 15
Slide 15 text
“log”というコレクションは作れるが使えない 解決策:なんかそれ以外の名前にしましょう
Slide 16
Slide 16 text
まとめ いろいろハマったが、結果的に2日もかからずに新しいサービスができた (QA・デザイン込でも5人日程度) Firebaseは便利
Slide 17
Slide 17 text
Thank you! Jumpei Takiyasu @juntaki M3, Inc. https://juntaki.com