Strava API V3获取俱乐部成员轨迹:缺开始时间及权限问题解决
解决Strava API获取俱乐部活动完整信息的权限与字段缺失问题
问题场景
开发跑步俱乐部数据服务时,需在仪表盘中展示运动员全名、活动距离、移动时间、耗时、轨迹开始时间,但Strava API存在以下限制:
- 调用
api/v3/clubs/{id_club}/activities:可获取运动员全名,但返回数据缺少轨迹开始时间字段,示例返回:
{ "resource_state": 2, "athlete": { "resource_state": 2, "firstname": "a", "lastname": "a" }, "name": "Morning Football (Soccer)", "distance": 6290.6, "moving_time": 3109, "elapsed_time": 4015, "total_elevation_gain": 0.0, "type": "Run", "sport_type": "Run", "workout_type": 0 }
- 调用
api/v3/athletes/{id_strava_member_in_club}/activities:能获取包含轨迹开始时间的完整数据(示例如下),但仅能访问当前授权用户自身的活动,调用其他俱乐部成员ID时会返回Not allowed to view unauthenticated activities权限错误:
{ "resource_state": 2, "athlete": { "id": 12345, "resource_state": 1 }, "name": "Morning Run", "distance": 15007.2, "moving_time": 4434, "elapsed_time": 4448, "total_elevation_gain": 5.9, "type": "Run", "sport_type": "Run", "workout_type": null, "id": 10271342378, "start_date": "2023-11-23T21:49:26Z", "start_date_local": "2023-11-24T04:49:26Z", "timezone": "(GMT+07:00) Asia/Ho_Chi_Minh", "average_speed": 3.385, "max_speed": 4.63, "average_cadence": 90.8 }
解决方案
方案1:通过活动ID调用详情接口补充缺失字段
这是最直接且无需额外授权的方案:
- 先用
api/v3/clubs/{id_club}/activities获取俱乐部所有活动的基础数据,每个活动对象包含唯一的id字段(注:你提供的示例中遗漏了该字段,实际接口会返回)。 - 对每个活动,调用
api/v3/activities/{id_activity}接口,该接口会返回完整的活动详情,包括start_date、start_date_local等时间字段。 - 通过活动ID将两个接口的数据关联,即可凑齐所需的全名、距离、移动时间、耗时、轨迹开始时间所有字段。
注意事项:
- 确保应用已申请
activity:read权限(访问公开活动)或activity:read_all权限(访问含私有活动); - 仅能获取俱乐部成员设置为公开的活动,私有活动需成员额外授权才能访问。
方案2:引导俱乐部成员授权应用(针对私有活动)
如果需要获取俱乐部成员的私有活动数据,需引导成员授权你的应用:
- 在应用授权流程中,请求
activity:read或activity:read_all权限; - 成员授权后,即可通过
api/v3/athletes/{id}/activities接口获取该成员的完整活动数据,包括私有活动。
该方案能保证数据完整性,但需要成员主动操作,适合对数据覆盖度要求高的场景。
内容的提问来源于stack exchange,提问作者caocuongccc
相关产品推荐
相关产品推荐

