gpx_to_strava记录

本文最后更新于:2023年3月18日 晚上

running_page中提供的gpx_to_strava_sync.py脚本如下

1
python3(python) scripts/gpx_to_strava_sync.py ${client_id} ${client_secret}  ${strava_refresch_token} --all

其中的 ${client_id} ${client_secret} ${strava_refresch_token}获取如下。

1. 注册strava并创建API应用程序

访问https://www.strava.com/,注册账号成功后,在个人设置里点击“我的API应用程序”,信息随便填写即可,

image-20230318175638661

点击保存后页面

image-20230318175955585

可以看到一下关键信息,其中

客户ID就是client_id,客户端秘钥就是client_secret,以及访问令牌和刷新令牌,需要注意的是这两个令牌的使用权限范围是read,只有读数据的权限,如果要上传gpx到strava,需要有write的权限,下面就开始生成带有write权限的令牌。

2. 获取授权码

  1. 为获取strava授权创建请求链接,请求链接https://www.strava.com/oauth/authorize以及携带参数

    参数值说明
    client_id你的客户ID,可在注册的api应用程序页面获取
    redirect_ur用户将使用授权代码重定向到的 URL。本地主机上一个随机但是唯一的应该没问题。
    response_type必须为code
    scope‘read’, ‘read_all’, ‘profile:read_all’, ‘profile:write’, ‘profile:write’, ‘activity:read’, ‘activity:read_all’, ‘activity:write’
  2. 先登录strava,并在浏览器地址栏输入下面的链接,其中[REPLACE_WITH_YOUR_CLIENT_ID]要换成自己的client_id,回车。

    1
    http://www.strava.com/oauth/authorize?client_id=[REPLACE_WITH_YOUR_CLIENT_ID]&response_type=code&redirect_uri=http://localhost/exchange_token&approval_prompt=force&scope=read_all,profile:read_all,activity:read_all,activity:write

    链接最后的activity:write就是对活动记录的更新和写入权限,这个一定要带着,该api为HTTP GET请求。

  3. 在页面上,勾选所需要的权限,并点击“授权”按钮。

  4. 地址栏会自动返回类似http://localhost/exchange_token?state=&code=9aaa9fea21c74b6ba6e67ba8823487598aad8670&scope=read,activity:write,activity:read_all,profile:write,profile:read_all,read_all

  5. 页面提示404不用管,从重定向链接中code参数值9aaa9fea21c74b6ba6e67ba8823487598aad8670。用于下面获取带有带有write权限的令牌使用。

3. 获取带有write权限的令牌

  1. 使用任何HTTP Rest客户端,对https://www.strava.com/oauth/token发送POST请求,查看api文档,携带参数如下:

    参数值说明
    client_id你的客户ID,可在注册的api应用程序页面获取
    client_secret你的客户端秘钥,可在注册的api应用程序页面获取
    code上面步骤中获得的授权码
    grant_type请求的授权类型,进行身份认证,必须是authorization_code
  2. 我使用的是Postman工具,Postman下载,发起请求,可以在返回的JSON串中拿到刷新令牌。

image-20230318183651521

  1. 拿到refresh_token,就可以执行running_page中的gpx_to_strava_sync.py脚本了,收工。

4. 参考资料

  1. Get a Strava API access token with write permission from Yi Zeng’s Blog

gpx_to_strava记录
http://www.uc920.top/2023/03/18/gpx-to-strava记录/
作者
waner
发布于
2023年3月18日
更新于
2023年3月18日
许可协议