Strava API v3中访问令牌的问题获取所有运动员的活动

mha*_*y00 10 javascript ajax node.js strava

我无法从Strava的api文档中的URL访问所有运动员活动(我自己的).

我能够获得自己年初至今的统计数据:

https://www.strava.com/api/v3/athletes/XXXXXXXX/stats?access_token=ACCESSTOKEN
Run Code Online (Sandbox Code Playgroud)

我能够获取我的个人资料信息:

https://www.strava.com/api/v3/athlete?access_token=ACCESSTOKEN
Run Code Online (Sandbox Code Playgroud)

但是当我试图完成所有活动时:

https://www.strava.com/api/v3/athlete/activities?access_token=ACCESSTOKEN
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

{
    "message": "Authorization Error",
    "errors": [
        {
            "resource": "AccessToken",
             "field": "activity:read_permission",
             "code": "missing"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我是否需要在网址中的某处包含我的客户端ID或密钥?我登录了,所以不明白为什么我无法访问自己的信息.请指教

tez*_*zzo 11

在2018年10月15日,Strava加强了授权流程,引入了新的范围列表.

您使用的是https://www.strava.com/settings/api上的访问令牌吗?

这个令牌scope:read可能不足以做你想做的事情(即你的活动是公开的还是私人的?).

如果您需要具有不同范围的新令牌,则必须执行这些步骤.

第1步:将用户重定向到Strava的授权页面:

https://www.strava.com/oauth/authorize?
    client_id=YOUR_CLIENT_ID&
    redirect_uri=YOUR_CALLBACK_DOMAIN&
    response_type=code&
    scope=YOUR_SCOPE
Run Code Online (Sandbox Code Playgroud)

第2步:code从响应中读取参数:

http://YOUR_CALLBACK_DOMAIN/?
    state=&
    code=AUTHORIZATION_CODE_FROM_STRAVA&
    scope=YOUR_SCOPE
Run Code Online (Sandbox Code Playgroud)

步骤3:使用POST包含授权码的新访问令牌; 你会access_token在JSON响应中找到新的.

https://www.strava.com/oauth/token?
    client_id=YOUR_CLIENT_ID&
    client_secret=YOUR_CLIENT_SECRET&
    code=AUTHORIZATION_CODE_FROM_STRAVA&
    grant_type=authorization_code
Run Code Online (Sandbox Code Playgroud)

您可以在应用程序页面中找到客户端ID,客户端密钥和回调域.

您可以在本文档中找到新范围的列表.

如果您是唯一使用您的应用程序的人,请提供一系列提示:

  • 您可以使用浏览器和http://localhost回调域手动执行前两个步骤
  • 使用旧的scope:read你可以获得Strava所谓的永久令牌:你可以使用这个令牌直到2019年10月15日,而不用重复3个步骤
  • 在今天code要求详细的活动时,获得一个短命令牌似乎不起作用


小智 10

我没有足够的点数来评论,但我最近做了这件事!

为了使其工作,您必须在步骤 1 中设置scope=activity:read(而不是“ scope=read”)。