Intégrer pismile en PHP
Connexion OIDC en PHP natif avec jumbojett/openid-connect-php, session et déconnexion.
Ce guide convient à tout site PHP sans framework. Il utilise la bibliothèque openid-connect-php, qui valide pour vous la signature du jeton d'identité. Durée : 10 minutes.
Installez la bibliothèque
Terminalcomposer require jumbojett/openid-connect-phpCentralisez la configuration
config.php<?php require __DIR__ . '/vendor/autoload.php'; use Jumbojett\OpenIDConnectClient; session_start(); function pismile(): OpenIDConnectClient { $oidc = new OpenIDConnectClient('https://pismile.com', 'VOTRE_CLIENT_ID', getenv('PISMILE_CLIENT_SECRET')); $oidc->setRedirectURL('http://localhost:8000/login.php'); $oidc->addScope(['openid', 'profile']); $oidc->setCodeChallengeMethod('S256'); return $oidc; }Gérez la connexion
Le même script envoie l'utilisateur vers pismile, puis traite son retour.
login.php<?php require __DIR__ . '/config.php'; $oidc = pismile(); $oidc->authenticate(); session_regenerate_id(true); $_SESSION['user'] = [ 'sub' => $oidc->getVerifiedClaims('sub'), 'name' => $oidc->getVerifiedClaims('name'), 'country' => $oidc->getVerifiedClaims('pismile_country'), 'category' => $oidc->getVerifiedClaims('pismile_category'), ]; $_SESSION['id_token'] = $oidc->getIdToken(); // Enregistrez ou mettez à jour l'utilisateur dans votre base, avec sub comme clé : // INSERT ... ON CONFLICT (pismile_sub) DO UPDATE SET name = ..., country = ... header('Location: /'); exit;Affichez l'utilisateur
index.php<?php require __DIR__ . '/config.php'; $user = $_SESSION['user'] ?? null; ?> <?php if ($user): ?> <h1>Bonjour <?= htmlspecialchars($user['name']) ?></h1> <p>Pays : <?= htmlspecialchars((string) $user['country']) ?> · Catégorie : <?= htmlspecialchars((string) $user['category']) ?></p> <a href="/logout.php">Se déconnecter</a> <?php else: ?> <a href="/login.php">Se connecter avec pismile</a> <?php endif; ?>Gérez la déconnexion
Déconnecte votre site, puis pismile, et revient sur votre page d'accueil.
logout.php<?php require __DIR__ . '/config.php'; $idToken = $_SESSION['id_token'] ?? null; $_SESSION = []; session_destroy(); if ($idToken) { pismile()->signOut($idToken, 'http://localhost:8000/'); } header('Location: /');Testez
TerminalPISMILE_CLIENT_SECRET=votre_secret php -S localhost:8000Ouvrez
http://localhost:8000, connectez-vous avec un alias de test du sandbox BCEAO et confirmez la demande dans le playground.
Cette page vous a-t-elle aidé ?
Merci, votre avis nous aide à améliorer la documentation.