Uwierzytelnianie odbywa się poprzez OAuth 2.0. Aplikacja indywidualna może wykonać uwierzytelnianie na trzy sposoby:
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
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:
<?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>
Aby użytkownicy mogli korzystać z Twojego aplikacji wystarczy że dodasz ją do panelu.