
Photo by
kurit3
Firebaseのデータが取得できない問題の解決
こんにちは。今回は、macbookでのiosアプリ開発をしている際、12月後半に作ったアプリを今日、1/26に実行したところ、ログインしてもデータが取得されなかったため、備忘録として解決策を残しておきます。
試したこと
3回程度アプリを実行しました。全てデータが取得できませんでした。firebaseにログインして探し回りましたが、私の力では解決が難しかったです。エラーコードを見たところ、XXXの取得に失敗しましたと表示され、こちらの文章(英語の文章を前後に含んでいましたがこれも投げています)をchatGPTに投げてみました。
解決策
返ってきたのは、権限が不足しているので、Firestoreのセキュリティルールが正確に設定されていないといった旨でした。これはMissing or insufficient permissionsのエラー文章から推測したようです。
Firestoreのルールを確認
Firebaseで左のメニューからFirestore Databaseを選択し、上部ルールタブを開いたところ、期間限定で誰でもアクセスできるようになっているよといったことがルール内に英文で書かれていました。結構危険ですね。また、期間を過ぎると全てが拒否されるといった仕様がありました。これが今回のエラーの主原因でした。そこで、ルールを強化してセキュリティ的に問題ないようにしました。
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /Users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}
こちらのコードを使用することで、ユーザ認証を必須にし、各ユーザでデータアクセスをするようにしています。
まとめ
ここまで読んでいただきありがとうございました。この記事がいいと思った方はスキ機能がございます。また、これ違う、もっとこうすれば?これってどういう意味?などありましたらコメント機能がございます。