0

我想通过 garmin API 为我的设备获取“每日摘要”。

我可以从https://healthapi.garmin.com/获取数据,但不能通过 api 请求。

为了获取“每日摘要”,我执行以下步骤:

我创建 curl 命令:

curl -v -X POST -H "Content-Type: application/json;charset=utf-8" -d '{"dailies":[{"userAccessToken":"userAccessToken","uploadStartTimeInSeconds":1514847600,"uploadEndTimeInSeconds":1515597660,"callbackURL":" https://healthapi.garmin.com/wellnessapi/rest/dailies"}]}' http://mysite/testping.php

其中 userAccessToken - 是我用来登录https://healthapi.garmin.com/的令牌 。作为回应,我收到没有任何数据的请求。

我以手册“Health REST API Specification”为例。

请回答,为什么我不提供请求中的任何数据?

4

2 回答 2

1

我可以看到两个问题。如果请求是直接向 Garmin 的 API 服务器发出的,则需要签名 (OAuth1),并且根据 HealthAPI 文档,它是 GET,而不是 POST。

最重要的是,CURL 请求发送到本地 PHP 服务器,而不是 Garmin。我不知道该服务器上正在运行什么,因此无法进一步调试。Garmin 地址在 JSON 数据负载中,但 curl 正在将此负载发布到http://mysite/testping.php

我建议首先将请求直接发送到 Garmin API 服务器,如果可能的话,使用 Postman 之类的工具来确保请求格式正确、为 OAuth v1 签名等。

于 2018-03-28T21:03:24.617 回答
1

回填设置触发器将新的历史数据推送到您的端点。

引自 Garmin 的 Health API 规范文档 - 第 8 节:

“回填请求立即返回空响应,而实际的回填过程在后台异步进行。一旦回填完成,将生成并发送通知,就好像该时间段的数据是新同步的一样。Ping 服务“摘要回填支持推送服务。单个回填请求的最大日期范围(含)为 90 天,但允许发送代表其他 90 天期限的多个请求以检索更多数据。”

于 2020-10-10T03:35:57.627 回答