Ruwork Skolkovo API Client
Установка
$ composer require ruwork/skolkovo-client guzzlehttp/psr7 php-http/guzzle6-adapter
Вместо guzzlehttp/psr7 вы можете использовать любую имплементацию PSR-7 сообщений, например, zendframework/zend-diactoros., (*1)
Вместо php-http/guzzle6-adapter вы можете использовать любую имплементацию HTTP-клиента, например, cURL client или Socket client., (*2)
Использование
Инициализация клиента
<?php
declare(strict_types=1);
use Ruwork\SkolkovoClient\SkolkovoClient;
use Ruwork\SkolkovoClient\TokenStorage\FileTokenStorage;
use Ruwork\SkolkovoClient\Definition\SkolkovoDefinition;
$tokenStorage = new FileTokenStorage('path/to/token.json');
$client = new SkolkovoClient([
'client_id' => 'client_id',
'client_secret' => 'client_secret',
], [], new SkolkovoDefinition($tokenStorage));
Получение ссылки для OAuth
<?php
declare(strict_types=1);
$url = $client->generateLoginUrl('your/redirect/url');
Получение пользователя после авторизации OAuth
<?php
declare(strict_types=1);
use Ruwork\SkolkovoClient\TokenStorage\InstantTokenStorage;
$code = $_GET['code'];
$token = $client->oauthTokenCode()
->setCode($code)
->setRedirectUri('your/redirect/url')
->getResult();
$apiData = $client->info()
->setTokenStorage(new InstantTokenStorage($token))
->getResult();
var_dump($apiData['AccessingUser']);
Отправка свободного запроса
<?php
declare(strict_types=1);
use Ruwork\SkolkovoClient\TokenStorage\InstantTokenStorage;
$client->request([
'method' => 'GET',
// адрес на стороне сервиса, обязательный параметр
'endpoint' => '/oauth/token',
// добавлять заголовки авторизации?
'authenticate' => true,
'data' => [
'key' => 'value',
],
'headers' => [
'header' => 'value',
],
]);
Генерация токена по имени пользователя и паролю
<?php
declare(strict_types=1);
$token = $client
->oauthTokenPassword()
->setUsername('username')
->setPassword('password')
->getResult();
$tokenStorage->set($token);