GitXplorerGitXplorer
i

strava

public
122 stars
26 forks
8 issues

Commits

List of commits on branch master.
Unverified
b8a6a00da9ec30b359733e5b20c61fada543a131

Update README.md

LLewisCraik committed 4 years ago
Unverified
1c5da73a667088cb2fc7a3964e487f58928e6f85

update READEM: add example with GET parameters; add link to change log

mmjaschen committed 4 years ago
Unverified
26ef25417dccda4945e8cc256de93d2deb716f99

Update README.md

LLewisCraik committed 4 years ago
Unverified
2bae51fcdd2f0ee12141982e3acf7cfd79b7f52c

update ignore file

mmjaschen committed 4 years ago
Unverified
2196338ee4961f81ef9ac23f6214549525e3a89f

Merge branch 'mjaschen-feature/new-oauth2-flow' into iamstuartwilson-master

mmjaschen committed 5 years ago
Unverified
2493a36497709951a49c24b399288cabd68320f1

update config for Travis CI

mmjaschen committed 5 years ago

README

The README file for this repository.

Build Status Minimum PHP Version Packagist Packagist Downloads

StravaApi

The class simply houses methods to help send data to and receive data from the API. Please read the API documentation to see what endpoints are available.

There is no file upload support at this time.

Installation

With Composer

composer require iamstuartwilson/strava

Or add it manually to your composer.json:

{
    "require" : {
        "iamstuartwilson/strava" : "^1.4"
    }
}

Manually

Copy StravaApi.php to your project and require it in your application as described in the next section.

Getting Started

Instantiate the class with your client_id and client_secret from your registered app:

require_once 'StravaApi.php';

$api = new Iamstuartwilson\StravaApi(
    $clientId,
    $clientSecret
);

If you're just testing endpoints/methods you can skip the authentication flow and just use the access token from your settings page.

You will then need to authenticate your strava account by requesting an access code. You can generate a URL for authentication using the following method:

$api->authenticationUrl($redirect, $approvalPrompt = 'auto', $scope = null, $state = null);

When a code is returned you must then exchange it for an access token and a refresh token for the authenticated user:

$result = $api->tokenExchange($code);

The token exchange result contains among other data the tokens. You can access them as attributes of the result object:

$accessToken = $result->access_token;
$refreshToken = $result->refresh_token;
$expiresAt = $result->expires_at;

Before making any requests you must set the access and refresh tokens as returned from your token exchange result or via your own private token from Strava:

$api->setAccessToken($accessToken, $refreshToken, $expiresAt);

Example oAuth2 Authentication Flow

examples/oauth-flow.php demonstrates how the oAuth2 authentication flow works.

  1. Choose how to load the StravaApi.php – either via Composer autoloader or by manually requiring it.
  2. Replace the three config values CALLBACK_URL, STRAVA_API_ID, and STRAVA_API_SECRET at the top of the file
  3. Place the file on your server so that it's accessible at CALLBACK_URL
  4. Point your browser to CALLBACK_URL and start the authentication flow.

The scripts prints a lot of verbose information so you get an idea on how the Strava oAuth flow works.

Example Requests

Once successfully authenticated you're able to communicate with Strava's API.

All actions that change Strava contents (post, put, delete) will need the scope set to write in the authentication flow.

Get Athlete Stats

$api->get('athletes/:id/stats');

List Athlete Activities

Some API endpoints support GET parameters:

$api->get(
    'athlete/activities',
    [
        'page' => 2,
        'per_page' => 10,
    ]
);

Post a new activity

$api->post(
    'activities', 
    [
        'name' => 'API Test',
        'type' => 'Ride',
        'start_date_local' => date('Y-m-d\TH:i:s\Z'),
        'elapsed_time' => 3600,
    ]
);

Update a athlete's weight

$api->put('athlete', ['weight' => 70]);

Releases

See CHANGELOG.md.