6

我正在使用Firebase UI Auth來處理我的應用中的電子郵件簽名,並啓用了磁盤持久性,以便可以離線訪問數據。但在應用程序中登錄一小時後,我在logcat中收到了此警告。1小時後身份驗證令牌無效 - Firebase中的磁盤持久性

W/PersistentConnection: pc_0 - Auth token revoked: expired_token (Auth token is expired.) 
W/PersistentConnection: pc_0 - Authentication failed: invalid_token (Invalid claim 'kid' in auth header.) 
W/PersistentConnection: pc_0 - Authentication failed: invalid_token (Invalid claim 'kid' in auth header.) 
... repeatedly 
... and sometimes 
W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found. 

當我收到這條消息,應用程序不能做任何火力保存/恢復新的未緩存的數據操作,除非我退出/清除數據,然後重新登錄。然後,在登錄後大約一個小時後,問題再次出現。我按照此token refresh troubleshooting guide(將我的調試和生產密鑰SHA1添加到Firebase和Google API控制檯),但沒有解決此問題。我在我的項目中使用了Firebase Console中最新的google-services.json

我也已經在使用最新的火力地堡SDK和Play服務庫

compile 'com.google.android.gms:play-services-auth:9.2.1' 
compile 'com.google.firebase:firebase-core:9.2.1' 
compile 'com.google.firebase:firebase-database:9.2.1' 
compile 'com.google.firebase:firebase-auth:9.2.1' 
compile 'com.firebaseui:firebase-ui-auth:0.4.3' 

我能在Application類持久性。

public class Application extends android.app.Application { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     FirebaseDatabase.getInstance().setPersistenceEnabled(true); 
    } 
} 

任何想法?如果您需要更多說明或者我沒有提供足夠的信息,請隨時發表評論。 謝謝

+0

這是一個遠射,但你可以檢查設備上的日期/時間,以確保它的設置正確嗎?如果您的設備設置爲不正確的時間,偶爾會出現令牌相關問題。 –

+0

它設置爲「自動」,所以它應該是正確的(基於互聯網時間)。我不知道這是否與firebase-ui庫有關。感謝您的評論,我可以嘗試的其他解決方案? :) – Wilik

+0

用戶登錄後,您是否可以通過調用FirebaseUser.GetToken(true)來獲取最新的Firebase身份驗證令牌,並在令牌頭中打印出「孩子」? Firebase身份驗證令牌是Json Web令牌(JWT),您可以使用https://jwt.io/查看JWT中的字段。 –

回答

1

Firebase服務器無法識別小孩22fb7e6f95c657f4407e04e97c984bb6dbbcfeb3。如果帳戶郵件不同,getToken()應該返回不同的標記。請向Firebase提交一張票據,其中包括來自兩個應用的整個令牌載荷。

+0

確定,如果問題仍然存在,我會再進行一次測試,然後提交Firebase支持憑單。謝謝! – Wilik

1

在Firebase 3中,智威湯遜的最大生存期60分鐘。所以1小時後,您將不得不重新生成訪問令牌。至於無效索賠「kid」,您無需將任何孩子有效負載傳遞給您的JWT。

注意:您面臨的問題是由於最近對JWT結構和工作流程所做的更改。我面臨同樣的問題 - 根據新的JWT規範修改我的代碼,並開始工作。

+0

嗨,感謝您的回覆:)我沒有對JWT做任何事情,因爲我使用Firebase SDK和庫(Firebase-UI)來處理認證部分。只有當我將兩個應用程序都安裝到設備並在兩個應用程序中登錄後,問題纔出現。現在問題不再存在,可能是因爲我更新了SDK到9.4.0。 – Wilik

相關問題