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.
composer require iamstuartwilson/strava
Or add it manually to your composer.json
:
{
"require" : {
"iamstuartwilson/strava" : "^1.4"
}
}
Copy StravaApi.php
to your project and require it in your application as described in the next section.
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);
examples/oauth-flow.php
demonstrates how the oAuth2 authentication flow works.
- Choose how to load the
StravaApi.php
– either via Composer autoloader or by manually requiring it. - Replace the three config values
CALLBACK_URL
,STRAVA_API_ID
, andSTRAVA_API_SECRET
at the top of the file - Place the file on your server so that it's accessible at
CALLBACK_URL
- 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.
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.
$api->get('athletes/:id/stats');
Some API endpoints support GET parameters:
$api->get(
'athlete/activities',
[
'page' => 2,
'per_page' => 10,
]
);
$api->post(
'activities',
[
'name' => 'API Test',
'type' => 'Ride',
'start_date_local' => date('Y-m-d\TH:i:s\Z'),
'elapsed_time' => 3600,
]
);
$api->put('athlete', ['weight' => 70]);
See CHANGELOG.md.