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

调用Strava API getRouteAsGPX导出GPX返回Resource Not Found问题

Strava getRouteAsGPX接口404报错排查指南

目前大量开发者实测该接口仍可正常调用,出现{'message': 'Resource Not Found', 'errors': []}的报错均为调用侧配置问题,不存在接口大规模失效的情况。

常见问题诱因

  • 授权权限不匹配:该接口需要OAuth token绑定read_routes权限范围才可访问。Strava对无权限的资源不会返回403禁止访问的提示,而是直接返回404资源不存在,避免泄露资源的真实存在性。如果你的token仅绑定了基础的read活动权限,哪怕token有效,访问路线资源也会触发该报错。
  • 路线ID使用错误:接口路径中要求传入的是Route ID,不是Activity(活动记录)ID。如果错把跑步/骑行活动的ID填入路径参数,系统无法匹配到对应路线资源,自然会返回404。你当前代码中填入的4947441661需要先通过自身账号的路线列表接口核对准确性,避免ID错配。
  • 请求参数冗余干扰:当前代码中额外加入的per_page、page参数是列表分页接口专用参数,单资源GPX导出接口不支持这类冗余参数。部分版本的请求校验逻辑会将带冗余参数的请求判定为非法请求,直接拦截返回404。
  • 资源归属不匹配:该接口仅允许访问当前授权账号下的私有路线、或作者明确开放GPX下载权限的公开路线。如果目标路线不属于当前授权账号、或作者关闭了GPX导出权限,系统同样会返回404,不会提示权限不足。
  • 响应解析逻辑错误:GPX接口返回的是XML格式的纯文本内容,不是JSON结构。强行对返回结果调用.json()方法,即使请求成功拿到了GPX内容,也会触发解析错误,无法正常获取文件。

落地解决方案

  1. 先校验当前access_token的授权范围,确认token已经包含read和read_routes两个权限,如果权限缺失,需要重新走OAuth授权流程申请对应权限的token,不能直接使用仅具备活动读取权限的token访问路线类接口。
  2. 调用当前账号的路线列表接口,拉取名下所有路线的ID信息,核对找到目标路线的准确ID,替换代码中错填的占位ID。
  3. 修正代码逻辑,去掉冗余的分页参数,同时移除对返回结果的强制JSON解析,直接读取文本内容做后续处理。参考修正后的可运行代码:
    import requests
    import urllib3
    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
    
    access_token = "你的带read_routes权限的有效token"
    # 替换为从路线列表中获取的准确route_id
    target_route_id = 从路线列表接口拿到的目标路线ID
    gpx_url = f"https://www.strava.com/api/v3/routes/{target_route_id}/export_gpx"
    
    header = {'Authorization': f'Bearer {access_token}'}
    response = requests.get(gpx_url, headers=header, verify=False)
    
    if response.status_code == 200:
        gpx_content = response.text
        # 可直接保存为本地GPX文件,或用gpxpy完成后续解析
        with open("exported_route.gpx", "w", encoding="utf-8") as f:
            f.write(gpx_content)
    else:
        print(f"请求失败,状态码:{response.status_code},返回内容:{response.text}")
    
  4. 如果目标路线是其他用户公开分享的资源,需要确认作者是否开放了GPX下载权限,对方关闭下载权限的情况下,即使知道正确的route_id也无法通过接口获取文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 20:06:09