0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Firebase】Firestore DBへのアクセス期限切れ対処法【匿名認証】

0
Posted at

はじめに

自分で開発したWebアプリにはCloud Firestoreを使っていたのですが、DBにアクセスできなくなってしまいました。
その解決法をご紹介します。

アクセスできなくなった際の状態

Firebaseからこんなメールが届いていました
image.png

Firebaseの左側にあるプロジェクトショートカットのFiretore押下後、ルールタブを参照してみます。
スクリーンショット 2026-07-28 23.21.57.png

どうやら16行目に書かれている日付の期限が切れているようです。
スクリーンショット 2026-07-31 0.23.46.png

原因

原因は先ほど述べたように、日付の期限切れです。
Firestoreを最初に作成した際、「テストモード」を選んでいました。
この「テストモード」では、30日間の有効期限がついているため、それが切れてしまいDBにアクセス出来なかったようです。

解決策

1.日付を伸ばす(非推奨)

先ほどの画像(Firestoreのルール)の期限を決めている部分を未来へ変更することで一応の対処は可能です(以下の部分)。

match /{document=**} {
      allow read, write: if request.time < timestamp.date(yyyy,mm, dd);
    }

しかし、これでは誰もが読み書き・削除できる状態なのでリスクがあります。
また、期限が切れた際にはまた今回と同様のことが起こります。

2.匿名認証を取り入れる

このようにすると、Firebase Auth(認証機能)を通じたリクエストしかデータベースが受け付けなくなるため、外部からの不正なスクリプト実行やデータ改ざんを防ぐことができます。
また、期限で使えなくなることもありません。

①セキュリティからAuthenticationを選択(Firebase)

スクリーンショット 2026-07-30 22.38.25.png

②匿名認証の有効化(Firebase)

以下の青枠部分を選択し、有効化します
スクリーンショット 2026-07-30 22.13.49.png

③ルールの書き換え(Firebase)

Firestoreのルールの日付があった部分を以下のように書き換えます。

match /{document=**} {
      allow read, write: if request.auth != null;
    }

④フロント側に処理を加える

アプリ起動時に匿名ログインを完了させる処理を追加します。
認証が終わってから画面を表示させないと未ログイン扱いとなりエラーになってしまうので気をつける必要があります。

以下は実装例です。

App.tsx
import { useEffect } from 'react';
import { getAuth, signInAnonymously } from 'firebase/auth';

// Firebase初期化(authの取得)
const auth = getAuth();

function App() {
  useEffect(() => {
    // アプリが開いた瞬間に匿名ログインを実行する
    signInAnonymously(auth)
      .then(() => console.log("匿名ログイン成功!"))
      .catch((error) => console.error("ログイン失敗:", error));
  }, []);

  return (
      <div>
      {/* 画面コード */}
      </div>
  );
}

export default App;

終わりに

突然DBが使えなかった時は焦りましたが、原因がわかって良かったです。
フロント側の処理はAIに上手いことやってもらいました。
同じ事象が起きた方のお役に立てれば幸いです。
また次回の記事でお会いしましょう!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?