簡體   English   中英

無法訪問 Flutter 中的 Firebase 存儲

[英]Can't access to Firebase Storage in Flutter

我想訪問我的 firebase 存儲中的一個文件夾,所以我使用這個 flutter 代碼來做到這一點

`
  var storageRef =
     firebase_storage.FirebaseStorage.instance.ref('test');
  storageRef.listAll().then((value) {
     value.items.forEach((element) {
   print(element.getDownloadURL().toString());`
  });`
});`

我通過此代碼將所有文件和文件夾設置為公開

allow read, write: if true;

但我在終端收到這條消息

W/StorageUtil(28332):請求沒有授權令牌

我認為我似乎必須對我的用戶進行身份驗證,但在我的用例中我不必這樣做

另外通過公開設置我的文件和文件夾我不需要驗證我的用戶

我的代碼或邏輯有什么問題?

消息“W/NetworkRequest: no auth token for request”是調試此問題的關鍵。

此日志消息意味着 Firebase 存儲在當前上下文中沒有看到任何登錄。 這包括匿名登錄。 這意味着沒有將授權傳遞給后端,唯一允許這樣做的方法是如果您將規則設置為完全開放(公共訪問),這是不推薦的(見下文)。

 //this sets completely open access to your data
 allow read, write;

我會查看您用於登錄的代碼,並確保它在任何存儲操作完成之前成功完成。 如果您確定您的授權碼是正確的,請嘗試重置設備上的數據,以便沒有保存的 state 可能會弄亂應用程序的授權信息。

您可能需要在 firebase 控制台中檢查您的存儲規則。 默認情況下,它設置為只允許經過身份驗證的用戶,像這樣

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

我找到了解決問題的方法,首先我在終端“W/StorageUtil(28332): no auth token for request”中收到的消息不是錯誤,而是調試消息,所以我犯的錯誤是我打印getDownloadURL() 沒有等待語句,所以我將 forEach 循環中的代碼更改為這樣

var x = await element.getDownloadURL(); print(x);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM