最近我注意到,对于我们的一些用户,Firebase 数据库没有正确地将本地更改与我们的 Android 应用程序中的远程数据库同步。监控.info/connected
path 表示永远不会为这些用户正确建立连接,并通过 FirebaseAuth.addAuthStateListener
监听身份验证状态返回非空当前用户。
我已经用 FirebaseDatabase.setLogLevel(Logger.Level.DEBUG)
调试了这个问题。当应用程序处于 Activity 状态时,这些消息似乎每隔一秒左右就会重复一次:
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 控制台内部,我可以看到很多
400 Bad Request
Android 应用程序使用的凭据的“ token 服务 API”错误。 API方法是google.identity.securetoken.v1.SecureToken.GrantToken
.我们的应用程序不会手动调用它 - 我相信 Firebase Auth 在内部使用它来保持 token 最新。在我看来,FirebaseAuth 库在尝试刷新过期的身份验证 token 时发出了错误的请求。有没有人遇到过类似的问题?我很难找到这个问题的根本原因,因为它不能立即重现(只发生在使用谷歌和电子邮件提供商的某些用户身上)。我不确定是否可以通过某种方式挖掘 token 服务 API 日志以获得更详细的消息?其他使用 Firebase 身份验证的客户端(iOS 和 Web)正常工作。
最佳答案
我有同样的错误;通过以下方式解决了它:
关于android - 使用 Firebase 身份验证时 token 服务 API 中的错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48164248/