使用 Firebase 身份验证时令牌服务 API 中的错误请求

And*_*son 5 android google-api firebase google-oauth firebase-authentication

最近,我注意到 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
Run Code Online (Sandbox Code Playgroud)

查看 Google API 控制台内部,我可以看到400 Bad RequestAndroid 应用程序使用的凭据的“令牌服务 API”有很多错误。API 方法是google.identity.securetoken.v1.SecureToken.GrantToken. 这不是由我们的应用手动调用 - 我相信 Firebase Auth 在内部使用它来保持令牌最新。

在我看来,FirebaseAuth 库在尝试刷新过期的身份验证令牌时正在执行错误的请求。有没有人遇到过类似的问题?我很难找到此问题的根本原因,因为它无法立即重现(仅适用于使用 Google 和电子邮件提供商的某些用户)。我不确定是否可以通过某种方式挖掘令牌服务 API 日志以获取更详细的消息?使用 Firebase 身份验证(iOS 和 Web)的其他客户端正常工作,没有任何问题。

Bob*_*Bob 12

我有同样的错误;通过以下方式解决了它:

  1. 转到https://console.developers.google.com/apis/credentials
  2. 单击 API 密钥
  3. 启用“令牌服务 API”以及“Identity Toolkit API”