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

Google Colab多次执行OAuth令牌刷新请求返回403错误求助

解决Google Colab中Strava令牌刷新重复请求403的问题

核心问题分析

首次请求正常、后续返回403且本地环境无此问题,大概率是以下两个关键原因:

  • Strava的refresh_token为一次性有效,刷新成功后会返回新的token,重复使用旧token必然触发403
  • Colab的共享环境可能存在请求缓存或IP频率限制,导致重复请求被API拦截

可行解决方法

  • 强制更新refresh_token
    Strava OAuth机制要求每次刷新后必须使用响应返回的新refresh_token,修改代码如下:

    import json, requests
    
    auth_url = 'https://www.strava.com/oauth/token?'
    
    params = {
        'client_id': cid
        ,'client_secret': csecret
        ,'grant_type': 'refresh_token'
        ,'refresh_token': strava_refresh_token
    }
    
    response = requests.post(auth_url, data=params)
    auth_response = json.loads(response.content)
    # 关键操作:更新refresh_token为最新值
    strava_refresh_token = auth_response['refresh_token']
    # 可选:将新token保存到Google Drive,避免Colab重启后丢失
    with open('/content/drive/MyDrive/strava_refresh_token.txt', 'w') as f:
        f.write(strava_refresh_token)
    
    print(response.status_code)
    
  • 禁用请求缓存
    给请求添加缓存控制头,避免Colab或中间代理缓存旧请求:

    headers = {'Cache-Control': 'no-cache', 'Pragma': 'no-cache'}
    response = requests.post(auth_url, data=params, headers=headers)
    
  • 添加请求延迟
    避免Colab的共享IP被Strava API判定为恶意请求:

    import time
    time.sleep(2)  # 每次请求前延迟2秒,可根据实际情况调整时长
    
  • 验证参数有效性
    每次请求前打印参数,确认refresh_token是最新值而非初始旧值:

    print("当前使用的refresh_token:", strava_refresh_token)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:47:37