Skip to content

Latest commit

 

History

History
95 lines (77 loc) · 4.37 KB

strava.md

File metadata and controls

95 lines (77 loc) · 4.37 KB

Strava

Overview

The Strava source can sync data from the Strava API

Useful links:

Output schema

This Source is capable of syncing the following Streams:

Features

Feature Supported?
Full Refresh Sync Yes
Incremental - Append Sync Yes
Namespaces No

Requirements

  • client_id - Strava account client ID
  • client_secret - Strava account client secret
  • refresh_token - Strava account refresh token
  • athlete_id - Strava athlete ID (only used for Athlete Stats)
  • query_start_timestamp - Starting timestamp for listing activities (only used for Activities)

Setup guide

Follow these steps to get the required credentials and inputs:

  • client_id and client_secret
    • Create a Strava account
    • Continue to follow the instructions from the doc above to obtain client_id and client_secret
  • refresh_token
    • Enter this URL into your browser (make sure to add your client_id from previous step:
      • 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=activity:read_all
    • Authorize through the UI
    • Browser will redirect you to an empty page with a URL similar to http://localhost/exchange_token?state=&code=b55003496d87a9f0b694ca1680cd5690d27d9d28&scope=activity:read_all
    • Copy the authorization code above (in this example it would be b55003496d87a9f0b694ca1680cd5690d27d9d28)
    • Make a cURL request to exchange the authorization code and scope for a refresh token:
    • curl -X POST https://www.strava.com/oauth/token \
      -F client_id=YOUR_CLIENT_ID \
      -F client_secret=YOUR_CLIENT_SECRET \
      -F code=AUTHORIZATION_CODE \
      -F grant_type=authorization_code
      
    • The resulting json will contain the refresh_token
    • Example Result:
    •   {
            "token_type": "Bearer",
            "expires_at": 1562908002,
            "expires_in": 21600,
            "refresh_token": "REFRESHTOKEN",
            "access_token": "ACCESSTOKEN",
            "athlete": {
                "id": 123456,
                "username": "MeowTheCat",
                "resource_state": 2,
                "firstname": "Meow",
                "lastname": "TheCat",
                "city": "",
                "state": "",
                "country": null,
                ...
            }
        }
      
    • Refer to Strava's Getting Started - Oauth or Authentication documents for more information
  • athlete_id
    • Go to your athlete page by clicking your name on the Strava dashboard or click on "My Profile" on the drop down after hovering on your top bar icon
    • The number at the end of the url will be your athlete_id. For example 17831421 would be the athlete_id for https://www.strava.com/athletes/17831421

Performance considerations

Strava API has limitations to 100 requests every 15 minutes, 1000 daily. More information about Strava rate limits and adjustments to those limits can be found here.

Changelog

Version Date Pull Request Subject
0.1.2 2021-12-15 8799 Implement OAuth 2.0 support
0.1.1 2021-12-06 8425 Update title, description fields in spec
0.1.0 2021-10-18 7151 Initial release supporting Strava API