WebアプリでCloud Firestoreを使うときの設定
Cloud Firestoreを設定した時に躓いたので記録を残します。
Firebaseでプロジェクトを作成
Firebaseコンソールでプロジェクトを作成します。
- プロジェクト名を決める
- アナリティクスも一応設定。「日本」を選択しました。
アプリを追加
Webなので</>マークを選択
アプリのニックネームを入力して「アプリを登録」
Firebase Hostingは使わないのでチェックしませんでした
SDKが表示されました
Cloud Firestoreを設定
「Cloud Firestore」を押します
「データベースの作成」ボタンを押します
デフォルトのままで次へ
asia-northeast1
を選択
設定後に変更できないという警告がでたので調べたけど、以下のドキュメントによるとasia-northeast1
が東京とのことなので大丈夫そう
https://cloud.google.com/datastore/docs/locations?hl=ja
できました
コレクションは自動で作成されるのでここまでで大丈夫です
セキュリティルールを変える
セキュリティルールを「本番環境モード」で作成した場合、Webアプリからアクセスすると以下のようなエラーが出ます。
Uncaught Error in snapshot listener: FirebaseError: Missing or insufficient permissions.
セキュリティルールを確認すると、以下のようになっていました。
false
のままでも、Firebase Admin SDK と組み合わせ、サーバーのみのバックエンドとして Cloud Firestore を使用する場合は、使えるようです。
公式サイトに「クローズド アクセス」として記載がありました。
今回はSPAなので、上記の設定では動きません。
一番簡単な設定は、if true
にすることですが、そのまま公開するとだれでもデータを窃取、変更、削除できてしまいます。
この設定は、公式サイトでも「安全でないルール」の一つ(オープン アクセス)として載っています。
そこで、
Cloud Firestore を使ってみるにあるように、認証が必要な設定にします。
allow read, write: if request.auth != null;
ただし上記設定は、完全ではありません。
ログインしているすべてのユーザーがそのデータにアクセスできてはまずい場合は、別の設定になります。
例えば今回私が作っているアプリケーションはチャットですが、通常、チャット機能はメッセージが見られるユーザーが限定されると思います。
その場合の設定は、以下の公式サイトに載っています。
安全でないルールを修正する - 認証されたユーザーのアクセス
SDKの確認方法
SDKを控えるのを忘れてしまった場合は、以下の場所から確認できます
追記
2021/04/10 セキュリティルールを変えるについて、間違えていたので修正しました
Author And Source
この問題について(WebアプリでCloud Firestoreを使うときの設定), 我々は、より多くの情報をここで見つけました https://qiita.com/okada3333/items/93a9767427808147e2ac著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .