Client OAuth pour PHP : guide complet d'intégration de l'authentification
\n\nOAuth (Open Authorization) est un protocole d'autorisation ouvert qui permet d'accorder à un tiers un accès limité aux ressources d'un utilisateur sans transmettre son identifiant et son mot de passe. Dans le monde PHP, il existe plusieurs bibliothèques pour implémenter OAuth 2.0, mais l'une des plus populaires et maintenues est League\\OAuth2-Client (The PHP League). Cette bibliothèque offre un moyen flexible et sécurisé d'intégrer la connexion via Google, Facebook, GitHub, VK (VKontakte), Yandex et bien d'autres services.
\n\nDans cet article, nous allons détailler l'installation, la configuration et l'utilisation du client OAuth pour PHP en prenant l'exemple de l'authentification via Google et VK. Vous apprendrez comment obtenir un access token, un refresh token et les données du profil utilisateur.
\n\nInstallation du client OAuth via Composer
\n\nPour commencer, il est nécessaire d'installer la bibliothèque principale et les providers (adaptateurs pour des services spécifiques). Exécutez dans le terminal :
\n\ncomposer require league/oauth2-client\ncomposer require league/oauth2-google\ncomposer require league/oauth2-vk\n\nLa bibliothèque prend en charge PSR-7 (messages HTTP) et PSR-18 (client HTTP), il est donc également recommandé d'installer Guzzle ou tout autre client HTTP compatible :
\n\ncomposer require guzzlehttp/guzzle\n\nArchitecture de base d'OAuth 2.0
\n\nOAuth 2.0 en PHP fonctionne selon le schéma suivant :
\n- \n
- Client ID et Client Secret — obtenus lors de l'enregistrement de l'application dans le service (Google Cloud Console, VK Developers, etc.). \n
- Redirect URI — l'URL sur votre site vers laquelle le service redirigera l'utilisateur après l'autorisation. \n
- Authorization Code — un code temporaire qui est échangé contre un access token. \n
- Access Token — la clé pour accéder à l'API de l'utilisateur. \n
- Refresh Token — permet de renouveler l'access token sans nouvelle autorisation. \n
Exemple : connexion via Google
\n\nCréons un gestionnaire simple pour l'authentification via Google. On suppose que vous avez déjà un client_id et un client_secret.
Étape 1. Redirection de l'utilisateur vers la page d'autorisation Google
\n\n<?php\nrequire 'vendor/autoload.php';\n\n$provider = new \\League\\OAuth2\\Client\\Provider\\Google([\n 'clientId' => 'VOTRE_CLIENT_ID',\n 'clientSecret' => 'VOTRE_CLIENT_SECRET',\n 'redirectUri' => 'https://votre-site.fr/callback.php',\n]);\n\n// Générer l'URL d'autorisation\n$authUrl = $provider->getAuthorizationUrl([\n 'scope' => ['email', 'profile'], // permissions demandées\n]);\n\n// Enregistrer l'état dans la session pour la protection CSRF\n$_SESSION['oauth2state'] = $provider->getState();\n\nheader('Location: ' . $authUrl);\nexit;\n\nÉtape 2. Traitement du callback (callback.php)
\n\n<?php\nsession_start();\nrequire 'vendor/autoload.php';\n\n$provider = new \\League\\OAuth2\\Client\\Provider\\Google([\n 'clientId' => 'VOTRE_CLIENT_ID',\n 'clientSecret' => 'VOTRE_CLIENT_SECRET',\n 'redirectUri' => 'https://votre-site.fr/callback.php',\n]);\n\n// Vérifier l'état pour prévenir les attaques CSRF\nif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) {\n unset($_SESSION['oauth2state']);\n exit('État invalide');\n}\n\ntry {\n // Échanger le code d'autorisation contre un access token\n $accessToken = $provider->getAccessToken('authorization_code', [\n 'code' => $_GET['code']\n ]);\n\n // Obtenir les données du profil utilisateur\n $resourceOwner = $provider->getResourceOwner($accessToken);\n $user = $resourceOwner->toArray();\n\n echo "Bonjour, " . htmlspecialchars($user['name']) . " !";\n echo "Email : " . htmlspecialchars($user['email']);\n // Enregistrer le token dans la base de données pour Aussi dans la bibliothèque
Framework CLI pour PHP (Symfony Console)
Framework CLI pour JavaScript (Node.js) : Commander.js – création d'applications console
Travail avec les dates en Swift (iOS/macOS) : bibliothèques et frameworks
sqlc pour Go : guide complet avec exemples concrets