api - 如何实现“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 在第一个示例中有效。
如果这是一个完全白痴的问题,我很抱歉。我是初学者,我将不胜感激。
谢谢
解决方案
对于 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 不允许额外的身份验证步骤,这就是我无法获得预期结果的原因。
推荐阅读
- r - 使用 LDAP https 身份验证连接 R 和 Presto
- python - 使用 pandas 对分层数据 [Parent->Child] 树进行有效分组
- php - 为什么我会在 php 中得到小于/大于条件的错误结果?
- c++ - 为什么 STL 优先级队列错误地对我的类对象进行排序
- python - CatBoost 中的错误?CatBoostClassifier 不适用于 sklearn 的 CalibratedClassifierCV
- angular - 如何从订阅错误块中的减速器获取错误
- php - 根据 twilio 数据库中的号码拨打多个号码
- sql-server - 参数化 RecordSource 查询以确保数据保持可更新?
- azure-devops - 将值从一个任务输出传递到另一任务
- python - TensorFlow 对象检测 API 和图像大小