我正在使用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);
}
}
任何想法?如果您需要更多說明或者我沒有提供足夠的信息,請隨時發表評論。 謝謝
這是一個遠射,但你可以檢查設備上的日期/時間,以確保它的設置正確嗎?如果您的設備設置爲不正確的時間,偶爾會出現令牌相關問題。 –
它設置爲「自動」,所以它應該是正確的(基於互聯網時間)。我不知道這是否與firebase-ui庫有關。感謝您的評論,我可以嘗試的其他解決方案? :) – Wilik
用戶登錄後,您是否可以通過調用FirebaseUser.GetToken(true)來獲取最新的Firebase身份驗證令牌,並在令牌頭中打印出「孩子」? Firebase身份驗證令牌是Json Web令牌(JWT),您可以使用https://jwt.io/查看JWT中的字段。 –