簡體   English   中英

如何使用 Flutter 更新 Firebase 中的身份驗證令牌

[英]How to update authentication token in Firebase with Flutter

我正在使用 Flutter 和 Firebase 制作應用程序,但我在 Firebase 規則中遇到“email_verified”檢查問題。 我想僅在用戶已驗證其 email 時授予對文檔的讀取權限。 代碼似乎是正確的,但是當我在我的應用程序中創建一個帳戶並驗證我的 email 時,在嘗試訪問文檔中的數據時出現權限被拒絕的錯誤。 如果我退出並再次登錄,我只能讀取數據。 因此,我很確定問題是授權令牌沒有更新。

我看到了一些關於此的問題(比如這個Firebase firestore not updating email verification status )但我無法將解決方案應用於我的代碼,因為我使用的是 Flutter 並且我無法找到如何做到這一點那里。

這是失敗的 Firebase 規則代碼:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /posts_data/{postId} {
      allow read: if request.auth.token.email_verified;
    }
  }
}

我沒有使用 Firebase 的經驗,所以如果有人能告訴我如何在 Flutter 中強制更新身份驗證令牌,我將不勝感激。

email驗證完成后,可以在FirebaseUser object上調用reload()方法,強制更新Flutter中的token。 email 驗證完成后嘗試以下代碼:

FirebaseAuth.instance.currentUser().then((user) async {
  await user.reload();
});

這將使用來自 Firebase 服務器的最新信息更新用戶的 Auth 令牌,包括 email 驗證狀態。

或者

當您嘗試訪問未經授權的內容時,您可以直接使用user.isEmailVerified() FirebaseAuth.instance.currentUser().getIdToken()參考

資料來源: firebase_auth package

暫無
暫無

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

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