如何用Python自动获取Strava API授权流程返回的授权码?
Strava API授权码自动获取Python实现方案
前置说明
你配置的回调地址指向本地127.0.0.1:5000服务,授权码是Strava完成用户授权后,通过回调请求的URL参数携带回来的,获取授权码本身不需要用到requests库,requests仅在后续用授权码兑换访问令牌时需要使用。
实现步骤
- 用轻量web框架Flask启动本地服务,监听127.0.0.1:5000端口的
/authorization路径请求 - 启动服务后打印授权URL,引导用户在浏览器完成授权操作
- 接收Strava的回调请求,直接从查询参数中提取
code字段即为所需授权码
完整实现代码
首先安装依赖:pip install flask requests
然后运行以下代码:
from flask import Flask, request import requests app = Flask(__name__) # 替换为你自己的Strava配置,已匹配你提供的公开参数 CLIENT_ID = "71724" CLIENT_SECRET = "替换为你自己的Strava客户端密钥" REDIRECT_URI = "http://127.0.0.1:5000/authorization" # 授权URL和你提供的完全一致 AUTH_URL = f"https://www.strava.com/oauth/authorize?client_id={CLIENT_ID}&redirect_uri=http%3A%2F%2F127.0.0.1%3A5000%2Fauthorization&approval_prompt=auto&response_type=code&scope=read_all%2Cprofile%3Aread_all%2Cactivity%3Aread_all" # 回调接收接口 @app.route("/authorization") def get_authorization_code(): # 直接从回调URL的查询参数中提取授权码 auth_code = request.args.get("code") if not auth_code: return "授权失败,未获取到授权码", 400 # 控制台打印获取到的授权码 print(f"成功获取授权码: {auth_code}") # -------------- 可选步骤:用授权码兑换access_token(需要用到requests) -------------- token_url = "https://www.strava.com/oauth/token" payload = { "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET, "code": auth_code, "grant_type": "authorization_code" } response = requests.post(token_url, data=payload) token_data = response.json() print(f"获取到的访问令牌: {token_data.get('access_token')}") # ------------------------------------------------------------------- return f"授权成功,授权码已获取: {auth_code}", 200 if __name__ == "__main__": print(f"请点击以下链接完成Strava授权:\n{AUTH_URL}") # 启动本地服务 app.run(port=5000, debug=False)
运行说明
- 运行代码后,复制控制台打印的授权URL到浏览器,登录你的Strava账号并确认授权
- 授权完成后会自动跳转到本地服务页面,控制台会直接打印获取到的授权码
- 可选的令牌兑换逻辑只需要补充你自己的
CLIENT_SECRET即可正常运行
内容的提问来源于stack exchange,提问作者Lash
相关产品推荐
相关产品推荐

