Google 适合 API 身份验证怪异

Google Fit API authentication weirdness

我正在为 Android Wear(minSdkVersion=21 和 targetSdkVersion=23)开发一些表盘,并为 Android 集成 Google Fit API。

如您所知,要在应用程序中使用 Google Fit API for Android,您需要 Android 应用程序的 OAuth 2.0 客户端 ID。 所以我转到 Google API 控制台上的 API 访问页面,使用 Android Studio (v 2.2.3) 调试证书创建了一个 OAuth 客户端和一个客户端 ID SHA-1 指纹和我的测试表盘的包名。我遵循了这里的所有说明:https://developers.google.com/fit/android/get-api-key

然后我在我的表盘中实现了权限请求和身份验证步骤、订阅、侦听器等。一切顺利。请求授权并成功授予,表盘正常工作,健身数据正确访问和显示。

这是早上。然后,突然到了下午,表盘上的健身数据停止更新了。累计距离现在显示为 0.00 米,而就在一分钟前,它与 phone Google Fit 应用程序上显示的信息完全同步。 UNKNOWN_ERROR (5000) 开始显示在 Android Studio 内的 Android 监视器中。

我(干净)重建了表盘,从手表上卸载,删除了 Google API 控制台上的凭据并重新开始。它又起作用了。无需更改一行代码。 这给我留下了一种不舒服的感觉。如果您是开发人员,您就会明白我在说什么:代码可以工作。但是怎么办?

所以我尝试了一些不同的东西。我在控制台中禁用了 Fitness API,并删除了表盘的 OAuth 客户端和客户端 ID。我什至从 phone 和手表上卸载了 Google Fit。 我再次从手表上卸载了表盘,干净地重建并重新安装。当我启动它时,它要求适当的 Google Fit API 授权。

它奏效了。表盘验证并接收适配数据。没有实际的 OAuth 客户端和客户端 ID! 我认为有某种缓存在起作用。但是现在几个小时了还一直在工作

有人知道为什么吗?这怎么可能?

谢谢!

结果是 logcat 中显示的间歇性连接失败和关联的 UNKNOWN_ERROR (5000)(前面还有 "User recoverable auth exception: btx: NeedPermission")是 Android Wear 的错误2.0,您可能会在此处阅读:https://code.google.com/p/android/issues/detail?id=233942 相同的代码在 Android Wear 1.5

中完美运行