Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@okada3333

WebアプリでCloud Firestoreを使うときの設定

Cloud Firestoreを設定した時に躓いたので記録を残します。

Firebaseでプロジェクトを作成

Firebaseコンソールでプロジェクトを作成します。
image.png

  • プロジェクト名を決める
  • アナリティクスも一応設定。「日本」を選択しました。

無料のSparkプランでプロジェクトができました
image.png

アプリを追加

Webなので</>マークを選択
image.png
アプリのニックネームを入力して「アプリを登録」
Firebase Hostingは使わないのでチェックしませんでした

image.png

SDKが表示されました

Cloud Firestoreを設定

「Cloud Firestore」を押します
image.png
「データベースの作成」ボタンを押します
image.png
デフォルトのままで次へ

image.png

asia-northeast1を選択
設定後に変更できないという警告がでたので調べたけど、以下のドキュメントによるとasia-northeast1が東京とのことなので大丈夫そう
https://cloud.google.com/datastore/docs/locations?hl=ja

image.png

できました
image.png
コレクションは自動で作成されるのでここまでで大丈夫です

セキュリティルールを変える

セキュリティルールを「本番環境モード」で作成した場合、Webアプリからアクセスすると以下のようなエラーが出ます。

Uncaught Error in snapshot listener: FirebaseError: Missing or insufficient permissions.

セキュリティルールを確認すると、以下のようになっていました。
image.png

falseのままでも、Firebase Admin SDK と組み合わせ、サーバーのみのバックエンドとして Cloud Firestore を使用する場合は、使えるようです。
公式サイトに「クローズド アクセス」として記載がありました。

今回はSPAなので、上記の設定では動きません。
一番簡単な設定は、if trueにすることですが、そのまま公開するとだれでもデータを窃取、変更、削除できてしまいます。

この設定は、公式サイトでも「安全でないルール」の一つ(オープン アクセス)として載っています。

そこで、
Cloud Firestore を使ってみるにあるように、認証が必要な設定にします。

allow read, write: if request.auth != null;

image.png

ただし上記設定は、完全ではありません。
ログインしているすべてのユーザーがそのデータにアクセスできてはまずい場合は、別の設定になります。

例えば今回私が作っているアプリケーションはチャットですが、通常、チャット機能はメッセージが見られるユーザーが限定されると思います。
その場合の設定は、以下の公式サイトに載っています。

安全でないルールを修正する - 認証されたユーザーのアクセス

SDKの確認方法

SDKを控えるのを忘れてしまった場合は、以下の場所から確認できます
image.png
image.png

追記

2021/04/10 セキュリティルールを変えるについて、間違えていたので修正しました

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What is going on with this article?