web-dev-qa-db-ja.com

PERMISSION_DENIED、権限が実際に許可されている場合

データベースルール:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
}

ストレージルール:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}

そしてそれはAnyone with your database reference will be able to read or write to your database

私が得ているエラー:

Uncaught (in promise) Error: PERMISSION_DENIED: Permission denied
    at firebase.js:1
    at exceptionGuard (firebase.js:1)
    at e.callOnCompleteCallback (firebase.js:1)
    at firebase.js:1
    at firebase.js:1
    at t.onDataMessage_ (firebase.js:1)
    at e.onDataMessage_ (firebase.js:1)
    at e.onPrimaryMessageReceived_ (firebase.js:1)
    at e.onMessage (firebase.js:1)
    at e.appendFrame_ (firebase.js:1)
(anonymous) @ firebase.js:1
exceptionGuard @ firebase.js:1
e.callOnCompleteCallback @ firebase.js:1
(anonymous) @ firebase.js:1
(anonymous) @ firebase.js:1
t.onDataMessage_ @ firebase.js:1
e.onDataMessage_ @ firebase.js:1
e.onPrimaryMessageReceived_ @ firebase.js:1
(anonymous) @ firebase.js:1
e.appendFrame_ @ firebase.js:1
e.handleIncomingFrame @ firebase.js:1
mySock.onmessage @ firebase.js:1

私が使用しているコード例:

let name = 'lorem'
let email = '[email protected]'
let imageUrl = 'secret_img_link'
let userId = 1231241241
firebase.database().ref('users/' + userId).set({
  username: name,
  email: email,
  profile_picture : imageUrl
})

他に何か必要な場合は、尋ねてください。私はそのエラーで立ち往生していて、それについて何もできません。アプリを再作成しても、何も起こりません。

5
IdkGoodName V

わかりました、私はそれを行う方法を自分で見つけました。

データベースに移動し、タイトルの横に2つのオプションがあります。

Cloud FirestoreRealtime database

リアルタイムデータベースを選択し、ルールに移動します

ルールをtrueに変更します。

これで私の問題は解決しました。

20
IdkGoodName V

この問題は何度か繰り返されています。ここで初心者を混乱させるのは、適切な場所に移動することです。 FirebaseコンソールにはクラウドFirestoreとリアルタイムデータベースがあります。この場合、何人かの人々がすでに解決策を提供しています。必ずFirebaseコンソール->リアルタイムデータベース->権限に移動し、ルールを設定してください。ただし、これは開発でのみ許可されていることを忘れないでください。それ以外の場合は、データベースを一般に公開したくありません。

"rules": {
 ".read": true,
 ".write": true
}

この問題に直面している人にとって、これが今すぐ簡単であることを願っています。

1
Alxterra