gpx_to_strava记录
本文最后更新于:2023年3月18日 晚上
running_page中提供的gpx_to_strava_sync.py
脚本如下
1 |
|
其中的 ${client_id}
${client_secret}
${strava_refresch_token}
获取如下。
1. 注册strava并创建API应用程序
访问https://www.strava.com/,注册账号成功后,在个人设置里点击“我的API应用程序”,信息随便填写即可,
点击保存后页面
可以看到一下关键信息,其中
客户ID就是client_id,客户端秘钥就是client_secret,以及访问令牌和刷新令牌,需要注意的是这两个令牌的使用权限范围是read,只有读数据的权限,如果要上传gpx到strava,需要有write的权限,下面就开始生成带有write权限的令牌。
2. 获取授权码
为获取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’ 先登录
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请求。在页面上,勾选所需要的权限,并点击“授权”按钮。
地址栏会自动返回类似
http://localhost/exchange_token?state=&code=9aaa9fea21c74b6ba6e67ba8823487598aad8670&scope=read,activity:write,activity:read_all,profile:write,profile:read_all,read_all
。页面提示404不用管,从重定向链接中code参数值
9aaa9fea21c74b6ba6e67ba8823487598aad8670
。用于下面获取带有带有write权限的令牌使用。
3. 获取带有write权限的令牌
使用任何HTTP Rest客户端,对
https://www.strava.com/oauth/token
发送POST请求,查看api文档,携带参数如下:参数 值说明 client_id 你的客户ID,可在注册的api应用程序页面获取 client_secret 你的客户端秘钥,可在注册的api应用程序页面获取 code 上面步骤中获得的授权码 grant_type 请求的授权类型,进行身份认证,必须是 authorization_code
我使用的是
Postman
工具,Postman下载,发起请求,可以在返回的JSON串中拿到刷新令牌。
- 拿到
refresh_token
,就可以执行running_page
中的gpx_to_strava_sync.py
脚本了,收工。