Pokiaľ si to povaha vášho doplnku žiada, je možné užívateľom pripraviť na zadané URL webové rozhranie s detailným nastavením (napr. prístupové údaje k externej službe).

Identifikácia a zobrazenie nastavenia pre eshop užívateľa

V najjednoduchšom prípade je možné využiť zástupný kód _ESHOP_CODE_ v parametri URL. V nastavení doplnku je teda možné napríklad uviezť URL pre nastavenie: https://plugin.tld/store?store=_ESHOP_CODE_.

Na zvýšenie bezpečnosti a komfortu užívateľov však odporúčame implementovať prihlasovanie prostredníctvom Webareal účtov. V systéme Webareal môže jeden používateľ spravovať viac eshopov, na ktorých môže byť nainštalovaný váš doplnok. Vo vlastnom rozhraní tak môžete užívateľom ponúknuť rýchle prekliknutie na iný eshop alebo prepojenie eshopov a hromadné nastavenie!

Proces prihlásenia využíva protokol OAuth 2.0 (viac tu). Pre implementáciu prihlasovania najskôr vygenerujte prístupové údaje k autorizačnej API na karte v detaile doplnku. POZOR! Tieto prístupové údaje sa líšia od prístupových údajov k Webareal API.

Prihlásenie užívateľa

Užívateľ je najprv presmerovaný na autentizačnú stránku.

GET https://marketplace.webareal.sk/user-auth s parametrami:

  • client_id - ID aplikácie
  • redirect_uri - URL pre presmerovanie používateľa späť na stránky doplnku. Musí sa zhodovať s adresou zadanou pri vytváraní prístupu k autorizačnej API
  • response_type - s hodnotou code
  • scope - s hodnotou USER_INFO
  • state - voliteľný parameter obsahujúci vlastný CSRF token, čo umožňuje validáciu odpovede servera, ktorá tento token bude tiež obsahovať

Po úspešnom prihlásení je užívateľ presmerovaný späť s nasledujúcimi parametrami:

  • code - autorizačný kód, ktorý bude vymenený za prístupový token. Platnosť toho kódu je 10 minút.
  • state - CSRF token

Príklad:

 
    header('Location: https://marketplace.webareal.sk/user-auth?client_id=LGWQrb7CCOLR5qt8zWnTZXP&redirect_uri=https://plugin-url.tld/login&response_type=code&scope=USER_INFO&state');
 

Ďalším krokom je získanie access tokenu

POST https://marketplace.webareal.sk/api/token

  • grant_type s hodnotou authorization_code
  • client_id - ID aplikácie
  • client_secret - tajný kľúč
  • code - autorizačný kód
  • redirect_uri - rovnaká URL pre presmerovanie používateľa

Autorizačný server odpovie JSON objektom:

 
    {
        "token_type": "Bearer",
        "expires_in": 3600,
        "access_token": "...", // použitie pre získanie údajov o užívateľovi a volanie API requestov
        "refresh_token": "..."
    }
 

Príklad:

 
    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL => https://marketplace.webareal.sk/api/token,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => '',
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 0,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => 'POST',
        CURLOPT_POSTFIELDS => [
            'grant_type' => 'authorization_code',
            'client_id' => 'LGWQrb7CCOLR5qt8zWnTZXP',
            'client_secret' => 'e0976500a9ab1bdeacbe7264856ce88d',
            'code' => $code,
            'redirect_uri' => 'https://plugin-url.tld/login'
        ],
    ));
    $response = curl_exec($curl);
    curl_close($curl);
    echo $response;
 
Parametre je potrebné zapísať ako array (form-data), nie ako JSON.


Získanie údajov o užívateľovi

Pomocou získaného access tokenu je teraz možné dotazom na API načítať údaje o prihlásenom užívateľovi.

GET https://marketplace.webareal.sk/api/user/about

 
    {
        "user": "user@email.com",
        "stores": [
            {
                "system": "www.webareal.cz",
                "code": "...",
                "name": "..."
            }
        ]
    }
 

Objekt taktiež obsahuje zoznam eshopov užívateľa, na ktorých je daný doplnok nainštalovaný.


Príklad:

 
    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL => https://marketplace.webareal.sk/api/user/about,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => '',
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 0,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => 'GET',
        CURLOPT_HTTPHEADER => array(
            'Authorization: Bearer ' . $bearer // access token
        ),
    ));
    $response = curl_exec($curl);
    curl_close($curl);
    echo $response;
 


Obnova access tokenu

Access token má obmedzenú platnosť na 1 hodinu, po jeho vypršaní je možné vymeniť refresh token za nový access token. Platnosť refresh tokenu je 1 mesiac.

POST https://marketplace.webareal.sk/api/token

  • grant_type s hodnotou refresh_token
  • refresh_token - predošlý refresh token
  • client_id - ID aplikácie
  • client_secret - kľúč aplikácie

Autorizačný server vracia nový access a refresh token:

 
    {
        "token_type": "Bearer",
        "expires_in": 3600,
        "access_token": "...",
        "refresh_token": "..."
    }