You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Strava API获统计数据正常,获取活动报401错误求助

问题描述

基于现有Python代码模板为亲属搭建Strava活动与统计展示网页时,出现以下异常:

  • 可正常获取统计数据,但调用活动列表API时返回401未授权错误
  • 执行获取最近5项活动脚本的输出:
root@odroid:/var/lib/strava/Sues# ./get_strava_activities.py
Token has not expired, returning
Getting activities
https://www.strava.com/api/v3/athlete/activities?per_page=5 {'Authorization': 'Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'}
Response code = 401
Token saved
  • 已反复核对.env文件中的client_id、client_secret、refresh_token、access_token、athlete_id、grant_type及文件路径,确认信息准确无误
排查解决思路
  1. 核对API权限范围差异

    • Strava API的统计接口(如/athlete/stats)和活动接口(/athlete/activities)所需权限不同:统计接口通常仅需read基础权限,而活动接口需要activity:read或activity:read_all权限。
    • 确认当初授权时是否申请了活动读取权限,若授权时仅勾选基础权限,需重新发起授权流程,获取包含活动权限的refresh_token。
  2. 验证access_token的有效性与归属

    • 即使脚本提示“Token has not expired”,仍需验证token归属:用当前access_token调用/athlete接口,检查返回的athlete_id是否与.env中配置的一致,确认token属于目标用户。
    • 手动调用Strava的token刷新接口,重新生成新的access_token,替换现有token后测试活动接口。
  3. 检查请求头与端点格式

    • 确认活动接口端点正确:https://www.strava.com/api/v3/athlete/activities是官方标准端点,同时检查请求头中Authorization的格式是否严格为Bearer <token>,无多余空格、符号或拼写错误(如Authorizaiton)。
    • 排查脚本中构建请求头的代码,确认token是否被完整读取,未因编码、换行符等问题截断。
  4. 确认.env文件加载逻辑

    • 确保脚本正确加载.env文件的所有变量,可在脚本中打印加载后的token前几位,与实际值对比,排除因文件读取异常导致的token错误。
  5. 检查Strava应用后台设置

    • 登录Strava开发者后台,确认应用状态为已发布(未发布应用存在访问限制),且应用权限配置中包含活动读取权限。

内容的提问来源于stack exchange,提问作者Ken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 05:40:04