我想通过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/的tocken。作为回应,我得到没有任何数据的请求。
我使用手册“Health REST API Specification”作为示例。
请回答,为什么我不提供任何数据?
答案 0 :(得分:1)
回填设置了一个触发器,用于将新的历史数据推送到您的端点。
引自Garmin的Health API规范文档-第8节:
”回填请求立即返回一个空响应,而实际的回填过程在后台异步进行。回填完成后,将生成通知并发送该通知,就像该时间段的数据是新同步的一样。摘要回填支持Ping服务和推送服务。单个回填请求的最大日期范围(包括)为90天,但允许发送代表其他90天期限的多个请求以检索其他数据。” >
答案 1 :(得分:0)
我可以看到两个问题。如果直接向Garmin的API服务器提出请求,则需要签名(OAuth1),根据HealthAPI文档,该请求是GET,而不是POST。
最重要的是,CURL请求转到本地PHP服务器,而不是Garmin。我不知道该服务器上运行的是什么,所以没有办法进一步调试。 Garmin地址在JSON数据有效负载中,但是curl将此有效负载POST到http://mysite/testping.php
我建议首先将请求直接发送到Garmin API服务器,如果可能的话,使用像Postman这样的工具确保请求正确形成,为OAuth v1签名等等。