首页 > 解决方案 > 如何实现“GET”请求以适用于 Postman 的 STRAVA API?

问题描述

进一步更新...

我得到了这个工作。尽管 Strava 的文档没有说调用中的任何参数都是强制性的,但似乎它们都是强制性的。您需要在纪元时间的参数之前和之后放置有效的参数,并且......(这是让我有点困惑的部分)您需要提供页码和每页的项目。每页的项目默认为 30,但页码不默认。它的工作方式是,如果你说第 1 页和每页 30 个项目,你会得到项目 1 - 30。如果你说第 3 页和每页 30 个项目,你会得到项目 31 - 60,依此类推。你必须创建一个循环,直到它得到一个空白页。然后您就知道您已检索到所有活动。(至少我认为它是这样工作的。)

阿德里安

问题更新...

经过一些挖掘和试验,我已经设法自己解决了一些问题(如下所述)。当您在 Strava 上的“我的 API 应用程序”下的设置下创建应用程序时,给出的令牌具有“读取”范围,并且似乎非常非常有限。

按照此处列出的步骤Strava 身份验证后,我能够获得具有以下范围的新令牌:

范围=读取,活动:读取,活动:read_all,配置文件:read_all,read_all

所以......我以为我是“黄金”,俗话说。

好吧,现在我可以使用以下方法进行个人活动:

https://www.strava.com/api/v3/activities/2110745394?include_all_efforts= "true"&access_token={{ADR_Strava_API_Key}}

但是当我尝试获取所有活动的列表时,我没有收到任何错误消息,但 Strava 只是返回

[] 这对于我认识的一名运动员来说有超过 1800 项活动。

我真正想要的是获取活动列表。任何帮助,将不胜感激。

谢谢

阿德里安

我可以使用邮递员使用以下 https 请求从 Strava 获取运动员信息:

https://www.strava.com/api/v3/athletes/19133707?access_token= {{ADR_Strava_API_Key}}

返回以下内容:

{
    "id": 19133707,
    "username": "adrian_geekie",
    "resource_state": 2,
    "firstname": "Adrian",
    "lastname": "Geekie",
    "city": "Gauteng, South Africa",
    "state": "GP",
    "country": "South Africa",
    "sex": "M",
    "premium": true,
    "summit": true,
    "created_at": "2017-01-03T16:07:37Z",
    "updated_at": "2019-01-28T16:08:07Z",
    "badge_type_id": 1,
    "profile_medium": "https://dgalywyr863hv.cloudfront.net/pictures/athletes/19133707/5599004/2/medium.jpg",
    "profile": "https://dgalywyr863hv.cloudfront.net/pictures/athletes/19133707/5599004/2/large.jpg",
    "friend": null,
    "follower": null
}

但是当我尝试使用此请求获取活动时:

https://www.strava.com/api/v3/19133707/activities?before=&after=1546293601&page=&per_page=&access_token= {{ADR_Strava_API_Key}}

我得到这个返回:

{“消息”:“未找到记录”,“错误”:[{“资源”:“资源”,“字段”:“路径”,“代码”:“无效”}]}

据我说,我要求提供 2019 年 1 月 1 日之后的所有记录,即纪元时间戳 1546293601。我知道在那之后该运动员有很多活动。(超过20)。

我还尝试使用以下方法进行单个活动:

https://www.strava.com/api/v3/activities/2110745394?include_all_efforts= "true"&access_token={{ADR_Strava_API_Key}}

我得到了结果:

{“消息”:“未找到资源”,“错误”:[{“资源”:“活动”,“字段”:“”,“代码”:“未找到”}]}

在 Strava 开发者页面上,给出了 HTTPie 的示例,如下所示:

https://www.strava.com/api/v3/activities/ {id}?include_all_efforts=" "授权:承载 [[token]]

所以我用 &access_token= 替换 "Authorization: Bearer [[token]]

也许这是我的错误,但 access_token 在第一个示例中有效。

如果这是一个完全白痴的问题,我很抱歉。我是初学者,我将不胜感激。

谢谢

标签: apipostmanstrava

解决方案


对于 Postman 的 GET 请求,我遇到了同样的问题。更具体地说,使用 Postman,{ https://www.strava.com/api/v3/activities/12345678?include_all_efforts=true } 不起作用,而 { https://www.strava.com/api/v3/athletes /12345678/stats ?} 的工作就像一个魅力。

然后,我按照文档中的描述试用了strava 游乐场。从那里,我被要求再次进行身份验证以扩展授权并成功发出 GET 请求。这个:{ https://www.strava.com/api/v3/activities/12345678?include_all_efforts=true } 终于按预期工作了。我想使用 Postman 不允许额外的身份验证步骤,这就是我无法获得预期结果的原因。


推荐阅读