【问题标题】:Using google fit api from a backend server从后端服务器使用 google fit api
【发布时间】:2016-03-02 07:08:42
【问题描述】:

我正在编写一个需要从后端服务器读取用户健身数据(步数、卡路里等)的 Android 应用程序。此服务器将读取数据并在必要时将通知推送到 Android 应用程序。

我设法完成了身份验证部分,应用程序现在将从 oauth 流接收的代码发送到后端服务器(遵循 this 示例),服务器成功交换代码访问和刷新令牌。

问题是我在谷歌示例中没有找到任何关于如何从后端服务器访问健身数据的资源。我找到了图书馆

<dependency> <groupId>com.google.apis</groupId> <artifactId>google-api-services-fitness</artifactId> <version>v1-rev16-1.21.0</version> </dependency>

但没有找到任何关于如何在后端服务器中使用它的指南。是否有关于如何在无需用户交互的情况下从后端服务器访问健身数据的指南?

提前感谢,我搜索了stackoverflow和互联网,但没有成功

【问题讨论】:

  • 那是 Android API 的东西。要从后端服务器访问,您需要使用 Rest API 在developers.google.com/fit 有文档您应该知道 Google 服务器和 Android 设备不定期同步,因此设备上的数据可能在数小时甚至数小时内都看不到天。
  • 感谢您的评论。据我了解,我提到的库是其余 api 的包装器。问题是有一些其他库的示例,例如驱动器、配置文件等,但我无法找到有关此特定库使用的一些指南。有什么帮助吗?
  • 没有。我对其余 API 的使用是直接的,我必须处理大量不同的后端,所以已经有了所有乱七八糟的东西。我实际上是在使用 Android,但会使用其他 API 而不是 Android API,因为这更适合我的流程,我只需在用户完成活动后上传数据。
  • 谢谢。还有一件事我可能对数据有近乎实时的要求。在这种情况下,您会建议使用 android api 并通过它同步数据吗?
  • 是的,如果用户要在设备上查看,那么只有设备上的查询才会匹配他们在 FIT 应用程序中看到的内容。使用 wifi 每隔几个小时左右同步一次,而仅使用移动数据则更慢。在 G+ Fit 开发者小组中定期投诉它,这是一个很好的信息来源。

标签: android google-api backend google-oauth google-fit


【解决方案1】:

如果有人需要,可以使用 javadoc here。下面是一个从后端服务器批量请求用户身高和体重的简单示例:

GoogleCredential credential = new GoogleCredential().setAccessToken(activeUser.getAccessToken());

Fitness fitness = new Fitness.Builder(new NetHttpTransport(), 
                                      JacksonFactory.getDefaultInstance(), 
                                      credential)
        .setApplicationName("MyApp")
        .build();

BatchRequest batchRequest = new BatchRequest(new NetHttpTransport(), credential);
fitness.users()
        .dataSources()
        .datasets()
        .get("me", "derived:com.google.weight:com.google.android.gms:merge_weight",
                        String.format("0-%d", System.nanoTime()))
        .queue(batchRequest, new WeightRequestCallback(activeUser));

fitness.users()
        .dataSources()
        .datasets()
        .get("me", "derived:com.google.height:com.google.android.gms:merge_height",
                String.format("0-%d", System.nanoTime()))
        .queue(batchRequest, new HeightRequestCallback(activeUser));


batchRequest.execute();

HeightRequestCallbackWeightRequestCallback 扩展 JsonBatchCallback&lt;Dataset&gt;

【讨论】:

  • 根据上面的讨论,我切换到 android 应用程序进行开发。对答案投了赞成票,如果有人确认这可行,或者如果我碰巧跑到这将接受答案
猜你喜欢
  • 2017-06-08
  • 1970-01-01
  • 2016-12-24
  • 2017-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多