Najlepsze rozwiązania do sprzedaży w internecie
Narzędzia dla Developerów
IdoSell

1. Kontrola dostępu

Uwierzytelnianie odbywa się poprzez OAuth 2.0. Aplikacja indywidualna może wykonać uwierzytelnianie na trzy sposoby:

  • kodem autoryzacyjnym (authorization code grant) podczas pierwszego logowania
  • tokenem dostępu (client credentials grant)
  • tokenem odświeżającym (refresh token grant) w przypadku wygaśnięcia ważności tokenu dostępu

Potrzebne adresy:

Obsługiwane zakresy dostępu (scope)
*openid - login zalogowanego użytkownika
*profile - dane zalogowanego użytkownika
*email - email zalogowanego użytkownika
*api-pa - wymagany jeżeli aplikacja wywołuje API Panelu administracyjnego

2. Dostęp do API Panelu administracyjnego z aplikacji indywidualnej

Po poprawnym uwierzytelnieniu w panelu aplikacja indywidualna zyskuje możliwość dostępu do API Panelu administracyjnego, przy czym autoryzacja poszczególnych wywołań bramek może zostać wykonana na dwa sposoby:

  • poprzez umieszczenie w żądaniu wywołania API nagłówka HTTP Authorization: Bearer access_token gdzie access_token jest tokenem uzyskanym w procesie autentykacji. Należy przy tym pamiętać o wysłaniu danych do logowania API czyli userLogin oraz authenticateKey nie uzupełnionych
  • poprzez podanie w danych do logowania userLogin='oauth_authorization' i authenticateKey=otrzymany_token_dostępowy
  • wywołania API panelu muszą odbywać się w komunikacji szyfrowanej https

3. SDK do stworzenia aplikacji indywidualnej

3.1 Przykład Hello World


<?php

require_once __DIR__ . '/autoload.php';

use IAI\Authorization\OpenIdClient;
use IAI\Authorization\Oauth2Client;

session_start();

// ---------- Application init ----------
$applicationState = new ApplicationState(); //implementation of IAI\Application\StateInterface
$keyStorage = new KeyStorage(); //implementation of IAI\Application\PublicKeyStorageInterface

/**
 * ENTER YOUR APPLICATION'S CONFIGURATION BELOW
 */
$applicationConfig = (new \IAI\Application\Config())
    ->setPanelTechnicalDomain('panel.technical.domain')
    ->setId('client_id')
    ->setSecret('client_secret')
    ->setRedirectUri('https://yourappdomain/index.php');     
    //enter here exactly the same return address that you indicated on the page of individual application settings in the IdoSell panel in the field "Address to which the application will be redirected after correct authorization"

// --------------------------------------

// ---------- Logging in, checking session, refreshing tokens etc. ----------
try {
    if (!$applicationState->isLoggedIn()) {

        //Using OpenID Connect authentication server to log in
        $client = new OpenIdClient($applicationConfig, $keyStorage, $applicationState);

        if (empty($_GET['code']) && empty($_GET['state'])) {
            //no authorization code, no application state - first step of authentication - get the authorization code
            $client->startAuthentication();
        }

        //got (or should have) authorization code and application state - exchange authorization code for access token
        $token = $client->finalizeAuthentication($_GET['code'], $_GET['state']);

        //save received token in session
        $applicationState->setToken($token);

        //get logged in user details and save them in session
        $user = $token->getIdToken()->getClaim('profile', false);
        if ($user === false) {
            throw new Exception('Couldn\'t log in');
        }
        $applicationState->setUser($user);
    }

    if ($applicationState->hasToRefreshToken()) {
        //logged in, but have old authorization token - need to refresh token
        $client = new Oauth2Client($applicationConfig, $keyStorage);
        $applicationState->setToken(
$client->refreshToken($applicationState->getToken())
        );
    }
} catch (Exception $e) {
    die('Error while getting access: ' . $e->getMessage());
}

// ------------------------------ Application "view" ------------------------------

$cssHref = ((new IAI\Application\Resources($applicationConfig))->getStyleSheetUrl());
$userName = $applicationState->getUser()->name;
$userPreferredName = $applicationState->getUser()->preferred_username;

?>

<html>
    <head>
        '; ?>
    </head>
    <body>
        Hello {$userName} ({$userPreferredName})!"; ?>
    </body>
</html>

3.2 Potrzebujesz bardziej zaawansowanego przykładu ?

  • pobierz bibliotekę IAI zawierającą gotowe klasy pomocne w obsłudze autoryzacji IAI OAuth Library
    • pobierz przykładową aplikację indywidualną exampleApplication, w której zaimplementowaliśmy wywołanie API panelu administracyjnego oraz przykład budowania formularza z danymi.
    • pobierz przykładowy formularz dodawania klienta sklepu Formularz dodawania klienta (pamiętając o zmianie w nagłówku pliku adresów arkuszy CSS na odpowiednie dla Twojej domeny)

4. Aplikacja indywidualna jest gotowa

Aby użytkownicy mogli korzystać z Twojego aplikacji wystarczy że dodasz ją do panelu.