/allegro-api-client-php

Allegro integration with authorization and generated php classes from swagger gen

Primary LanguagePHPMIT LicenseMIT

Allegro Api PHP Client

Helper model and connector classes for allegro integration.

Parts of the library is automatically generated by the OpenAPI Generator project using swagger definition from allegro:

https://developer.allegro.pl/swagger.yaml

Installation with composer

composer require coffeedesk/allegro-api-client-php

Api documentation

This package was implemented according to:

https://developer.allegro.pl/documentation/

Usage

OAuth

Implementation OAuth according to https://developer.allegro.pl/auth/

1 Stage: Get code from callback

<?php

require_once(__DIR__ . '/vendor/autoload.php');

$authenticator = new \AllegroApi\Authentication\Authenticator(
    new \GuzzleHttp\Client(),
    'https://allegro.pl.allegrosandbox.pl',
    'ALLEGRO_CLIENT_ID', // after add this app to allegro sandbox panel you will get this
    'ALLEGRO_CLIENT_SECRET', // after add this app to allegro sandbox panel you will get this
    'http://uri.where.is.sent.callback/authorization_callback' // after authorization callback will be sent on url (you can use serveo.net localy)
);

echo $authenticator->getAuthorizeUrl();

// This shows url to allegro OAuth, you can redirect in your app to this url in your controller.

?>

2 Stage: Get tokens from callback after authorization - e.g. http://uri.where.is.sent.callback/authorization_callback

Make controller under your callback url, allegro will send you tokens after login.

$authorizationToken = $_GET['code'];
$tokens = $authenticator->getAuthenticationTokensFromAuthorizationToken($authorizationToken);

3 Stage: Use received access token in every request

<?php

require_once(__DIR__ . '/vendor/autoload.php');

$configuration = (new \AllegroApi\Configuration())
    ->setHost('https://api.allegro.pl.allegrosandbox.pl')
    ->setAccessToken('access.token.received.from.callback.authorize.url');

$offerManagmentApi = new \AllegroApi\Client\OfferManagementApi(
    new \GuzzleHttp\Client(),
    $configuration
);

$categories = $offerManagmentApi->getCategoriesUsingGET();

var_dump($categories);

?>

Refresh token

To refresh allegro token you might need get current token from your repository


<?php

require_once(__DIR__ . '/vendor/autoload.php');

$authenticator = new \AllegroApi\Authentication\Authenticator(
    new \GuzzleHttp\Client(),
    'https://allegro.pl.allegrosandbox.pl',
    'ALLEGRO_CLIENT_ID', // after add this app to allegro sandbox panel you will get this
    'ALLEGRO_CLIENT_SECRET', // after add this app to allegro sandbox panel you will get this
    'http://uri.where.is.sent.callback/authorization_callback' // after authorization callback will be sent on url (you can use serveo.net localy)
);

// your repository 
$tokenData = $allegroTokenRepository->getCurrentToken();

$newTokenData = $authenticator->getNewTokensFromCurrentTokens($tokenData['refresh_token']);

// your repository 
$allegroTokenRepository->allegroTokenRepository->saveToken($newTokenData);

Code Notice: Best way to use authenticator and AllegroApi classes is Dependency Injection. To define configuration(\AllegroApi\Configuration) you can use factory pattern.

Development

Generate php classes using openapi-generator

ATTENTION!

Please look at commit 070d13ed2d031c8361597aead4071a78b6317ba6 in this repo. Package openapi-generator always generate wrong CategoryParameters.php. You have to fix it every time you regenerate this code.

To generate new clients and models run:

docker run --rm \
-v ${PWD}:/local/project \
-v ${PWD}/src:/local/out/php/lib \
openapitools/openapi-generator-cli generate \
-i /local/project/swagger.yaml \
-g php \
-o /local/out/php \
--invoker-package AllegroApi \
--api-package Client \
--model-package Model