basvandorst / stravaphp
Strava V3 API PHP客户端,支持OAuth认证
2.0.0
2022-04-22 12:27 UTC
Requires
- php: ^7.4 || ^8.0
- ext-curl: *
- ext-json: *
- guzzlehttp/guzzle: ^6.3 || ^7.0.1
- league/oauth2-client: ~2.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.4
- phpstan/phpstan: ^1.5
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-08-30 01:25:57 UTC
README
简要说明: Strava V3 API PHP客户端,支持OAuth认证
Strava V3 API是一个公开接口,允许开发者访问丰富的Strava数据集。该接口稳定,目前被Strava移动应用程序使用。然而,为了提高性能和增强功能,偶尔会进行修改。有关详细信息,请参阅Strava的变更日志。
在这个GitHub仓库中,您可以找到Strava V3 API的PHP实现。StravaPHP当前版本结合了V3 API和适当的OAuth认证。
入门指南
获取API密钥
所有对Strava API的调用都需要一个访问令牌,该令牌定义了发出调用的运动员和应用程序。任何注册的Strava用户都可以通过首先在https://developers.strava.com创建应用程序来获取访问令牌。
Composer包
使用Composer安装此StravaPHP包。
{
"require": {
"basvandorst/stravaphp": "^2.0.0"
}
}
StravaPHP使用方法
首先,授权和认证
<?php include 'vendor/autoload.php'; use Strava\API\OAuth; use Strava\API\Exception; try { $options = [ 'clientId' => 1234, 'clientSecret' => 'APP-TOKEN', 'redirectUri' => 'http://my-app/callback.php' ]; $oauth = new OAuth($options); if (!isset($_GET['code'])) { print '<a href="'.$oauth->getAuthorizationUrl([ // Uncomment required scopes. 'scope' => [ 'read', // 'read_all', // 'profile:read_all', // 'profile:write', // 'activity:read', // 'activity:read_all', // 'activity:write', ] ]).'">Connect</a>'; } else { $token = $oauth->getAccessToken('authorization_code', [ 'code' => $_GET['code'] ]); print $token->getToken(); } } catch(Exception $e) { print $e->getMessage(); }
然后,调用您的API方法!
<?php include 'vendor/autoload.php'; use Strava\API\Client; use Strava\API\Exception; use Strava\API\Service\REST; try { $adapter = new \GuzzleHttp\Client(['base_uri' => 'https://www.strava.com/api/v3/']); $service = new REST($token->getToken(), $adapter); // Define your user token here. $client = new Client($service); $athlete = $client->getAthlete(); print_r($athlete); $activities = $client->getAthleteActivities(); print_r($activities); $club = $client->getClub(9729); print_r($club); } catch(Exception $e) { print $e->getMessage(); }
类文档
Strava\API\Factory
使用方法
use Strava\API\Factory; // Configure your app ID, app token and callback uri $factory = new Factory(); $OAuthClient = $factory->getOAuthClient(1234, 'APP-TOKEN', 'http://my-app/callback.php');
方法
$factory->getOAuthClient($client_id, $client_secret, $redirect_uri); $factory->getAPIClient($token);
Strava\API\OAuth
使用方法
use Strava\API\OAuth; // Parameter information: https://strava.github.io/api/v3/oauth/#get-authorize $options = [ 'clientId' => 1234, 'clientSecret' => 'APP-TOKEN', 'redirectUri' => 'http://my-app/callback.php' ]; $oauth = new OAuth($options); // The OAuth authorization procces (1st; let the user approve, 2nd; token exchange with Strava) if (!isset($_GET['code'])) { print '<a href="'.$oauth->getAuthorizationUrl([ // Uncomment required scopes. 'scope' => [ 'read', // 'read_all', // 'profile:read_all', // 'profile:write', // 'activity:read', // 'activity:read_all', // 'activity:write', ] ]).'">Connect</a>'; } else { $token = $oauth->getAccessToken('authorization_code', [ 'code' => $_GET['code'] ]); print $token->getToken(); }
方法
$oauth->getAuthorizationUrl($options = []); $oauth->getAccessToken($grant = 'authorization_code', $params = []);
Strava\API\Client
使用方法
// REST adapter (We use `Guzzle` in this project) use GuzzleHttp\Client as GuzzleClient; use Strava\API\Service\REST; use Strava\API\Client; $adapter = new GuzzleClient(['base_uri' => 'https://www.strava.com/api/v3/']); // Service to use (Service\Stub is also available for test purposes) $service = new REST('RECEIVED-TOKEN', $adapter); // Receive the athlete! $client = new Client($service); $athlete = $client->getAthlete(); print_r($athlete);
方法
$client->getAthlete($id = null); $client->getAthleteStats($id); $client->getAthleteClubs(); $client->getAthleteRoutes($id, $type = null, $after = null, $page = null, $per_page = null); $client->getAthleteActivities($before = null, $after = null, $page = null, $per_page = null); $client->getAthleteFriends($id = null, $page = null, $per_page = null); $client->getAthleteFollowers($id = null, $page = null, $per_page = null); $client->getAthleteBothFollowing($id, $page = null, $per_page = null); $client->getAthleteKom($id, $page = null, $per_page = null); $client->getAthleteZones(); $client->getAthleteStarredSegments($id = null, $page = null, $per_page = null); $client->updateAthlete($city, $state, $country, $sex, $weight); $client->getActivityFollowing($before = null, $page = null, $per_page = null); $client->getActivity($id, $include_all_efforts = null); $client->getActivityComments($id, $markdown = null, $page = null, $per_page = null); $client->getActivityKudos($id, $page = null, $per_page = null); $client->getActivityPhotos($id, $size = 2048, $photo_sources = 'true'); $client->getActivityZones($id); $client->getActivityLaps($id); $client->getActivityUploadStatus($id); $client->createActivity($name, $type, $start_date_local, $elapsed_time, $description = null, $distance = null); $client->uploadActivity($file, $activity_type = null, $name = null, $description = null, $private = null, $commute = null, $trainer = null, $data_type = null, $external_id = null); $client->updateActivity($id, $name = null, $type = null, $private = false, $commute = false, $trainer = false, $gear_id = null, $description = null); $client->deleteActivity($id); $client->getGear($id); $client->getClub($id); $client->getClubMembers($id, $page = null, $per_page = null); $client->getClubActivities($id, $page = null, $per_page = null); $client->getRoute($id); $client->getRouteAsGPX($id); $client->getRouteAsTCX($id); $client->getSegment($id); $client->getSegmentLeaderboard($id, $gender = null, $age_group = null, $weight_class = null, $following = null, $club_id = null, $date_range = null, $page = null, $per_page = null); $client->getSegmentExplorer($bounds, $activity_type = 'riding', $min_cat = null, $max_cat = null); $client->getSegmentEffort($id, $athlete_id = null, $start_date_local = null, $end_date_local = null, $page = null, $per_page = null); $client->getStreamsActivity($id, $types, $resolution = null, $series_type = 'distance'); $client->getStreamsEffort($id, $types, $resolution = null, $series_type = 'distance'); $client->getStreamsSegment($id, $types, $resolution = null, $series_type = 'distance'); $client->getStreamsRoute($id);
UML图
类图
序列图
关于StravaPHP
使用的库
开发
StravaPHP库由软件工程师和自行车爱好者Bas van Dorst创建。当然,特别感谢所有贡献者。
贡献
所有问题和拉取请求都应填写在basvandorst/StravaPHP仓库中。
许可证
StravaPHP库是开源软件,使用MIT许可证。