最近我注意到Firebase数据库没有在我们的Android应用程序中为某些用户正确地同步本地更改与远程数据库。监视.info/connected
路径表示从未为这些用户正确建立连接,并且通过FirebaseAuth.addAuthStateListener
侦听身份验证状态将返回非空当前用户。
我已使用FirebaseDatabase.setLogLevel(Logger.Level.DEBUG)
调试了此问题,并且这些消息似乎在应用处于活动状态时每隔一秒重复一次:
D PersistentConnection: pc_0 - Trying to fetch auth token
W BiChannelGoogleApi: [FirebaseAuth: ] getGoogleApiForMethod() returned Gms
D PersistentConnection: pc_0 - Error fetching token: An internal error has occurred. [ TOKEN_EXPIRED ]
D PersistentConnection: pc_0 - Scheduling connection attempt
D ConnectionRetryHelper: Scheduling retry in 767ms
查看Google API控制台,我可以看到"令牌服务API"的许多400 Bad Request
错误用于Android应用程序使用的凭据。 API方法是google.identity.securetoken.v1.SecureToken.GrantToken
。这不是我们的应用程序手动调用的 - 我相信Firebase Auth会在内部使用它来保持令牌最新。
在我看来,FirebaseAuth库在尝试刷新过期的身份验证令牌时会执行错误的请求。有没有人遇到过类似的问题?我很难找到这个问题的根本原因,因为它不能立即重现(仅限某些用户使用谷歌和电子邮件提供商)。我不确定是否可以通过某种方式深入了解令牌服务API日志以获取更详细的消息?使用Firebase身份验证(iOS和Web)的其他客户端正在运行,没有任何问题。
答案 0 :(得分:0)
我有同样的错误;解决方法: