2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Firebase [cloud_firestore/permission-denied] The caller does not have permission to execute the specified operation.が出たとき

Last updated at Posted at 2022-11-13

先日、FlutterでFirestoreを利用している方がFirestoreに値を追加できないとのことだったので、その備忘録です!

実際に表示されたエラー

I/flutter (29667): Failed to add user: [cloud_firestore/permission-denied] The caller does not have permission to execute the specified operation.

原因

このエラーは、FireStoreの有効期限の設定を選択していない場合に出る、もしくは
Firestoreの有効期限が切れたときに生じるエラーになります。

有効期限の設定を選択していない場合のルール

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

有効期限が切れた場合

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if
          request.time < timestamp.date(2022, 10, 12);
    }
  }
}

Firebaseのルールに関して、気になる方は公式のドキュメントを見てみてください!
簡単に言うと、Railsのストロングパラメータのように
意図しない不正な値の挿入や改ざんの防止などを行うものです!

解決策

初めに、FirebaseConsoleに入り、Firestoreを選択後、下記の画像にある、「ルール」を押します。
image.png

次に、ルールを以下のように変更すれば大丈夫です!

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if
          request.time < timestamp.date(2022, 12, 12);
    }
  }
}

timestamp.date(2022, 12, 12)の中身はざっと30日後くらいにしておけば大丈夫です!
timestamp.date(年, 月, 日)

最後に、「公開」ボタンを押すと、変更完了です!
1分程度はルールの変更が適用されていない可能性があるので
少し待ってから再度実行すると良さそうです!
image.png

注意点

この他に、全ての読み書きを可能にする方法もありますが
セキュリティ上よろしくないので
以下のような内容は記載しないようにしましょう。
(公式ドキュメントにも避けるように記載されています)

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

参考文献

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?