我正在使用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中的字段。 –