【発生していた問題】
Firebaseにおいてv9への移行対応をしていたところ、Firestoreのセキュリティルールで、v8では認証状態に応じて値が格納されていたrequest.authが
v9ではrequest.authが常にnullとなっていた
↓こういうルールを実装していた
allow read: if request.auth != null;
【解決方法】
セキュリティルールを使う場合はgetFirestoreと同時にgetAuthする
const firebaseApp = initializeApp(firebaseConfig) const db = getFirestore(firebaseApp) //これを追加する const auth = getAuth(firebaseApp)
【解決まで】
・ぼんやりと通信を眺めていたところ、v8の通信時にはAuthenticationヘッダーがあるのにv9のときはないことに気づく
・v9でもAuthenticationヘッダーに手動でtokenを付加するとrequest.authに想定通りの挙動をするようになった
→v8のときはfirestoreを呼んだらauthも自動的に呼んでくれたが、v9では必要なコンポーネントのみを呼ぶようになってるから明示的にauthを呼ぶ必要があった
【雑記】
・firebaseはindexedDBにtokenを突っ込んでる
・setLogLevel('debug')でfirestoreのデバッグ流せることを知った