Client OAuth pour PHP : intégration avec Google, GitHub et VK

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Client OAuth pour PHP : guide complet d'intégration



Dans le développement web moderne, OAuth (Open Authorization) est devenu le standard de facto pour organiser la connexion via des services tiers. Le client OAuth pour PHP permet à vos utilisateurs de s'authentifier sur votre site via les comptes Google, GitHub, VKontakte et d'autres fournisseurs, sans avoir à créer une inscription séparée.



Dans cet article, nous examinerons la bibliothèque PHP populaire League OAuth2 Client, qui fournit une interface unifiée pour travailler avec différents fournisseurs OAuth2.



Qu'est-ce qu'OAuth2 et pourquoi en a-t-on besoin ?



OAuth2 est un protocole d'autorisation qui permet de déléguer l'accès aux ressources de l'utilisateur. Au lieu de stocker les mots de passe des services tiers, vous recevez un jeton d'accès temporaire. Les principaux avantages :



  • Sécurité — les mots de passe des utilisateurs ne sont pas transmis à votre application
  • Commodité — les utilisateurs se connectent en un clic
  • Confiance — moins de risque de fuite de données
  • Données supplémentaires — vous pouvez obtenir l'email, le nom, l'avatar et d'autres informations


Installation de la bibliothèque League OAuth2 Client



Pour travailler avec OAuth2 en PHP, il est recommandé d'utiliser le paquet officiel league/oauth2-client. L'installation se fait via Composer :



composer require league/oauth2-client


Pour des fournisseurs spécifiques, des paquets supplémentaires sont nécessaires. Par exemple :



composer require league/oauth2-google      # Googlecomposer require league/oauth2-github       # GitHubcomposer require digitalcloud/oauth2-vk     # VK (non officiel)


Architecture de base du client OAuth2



Tout client OAuth2 fonctionne selon le schéma suivant :



  1. L'utilisateur clique sur le bouton « Se connecter via le fournisseur »
  2. Votre application redirige l'utilisateur vers la page d'autorisation du fournisseur
  3. L'utilisateur confirme l'accès
  4. Le fournisseur renvoie un code d'autorisation vers votre URI de callback
  5. Votre application échange le code contre un jeton d'accès
  6. À l'aide du jeton, vous obtenez les données de l'utilisateur depuis l'API du fournisseur


Exemple d'intégration avec Google



Examinons un exemple de travail complet pour l'authentification via Google. Créez d'abord un projet dans Google Cloud Console et obtenez un Client ID et un Client Secret.



Structure des fichiers :

  • config.php — paramètres de l'application
  • login.php — page de connexion
  • callback.php — gestionnaire de la réponse de Google


config.php



<?php// Paramètres OAuth pour Googledefine('GOOGLE_CLIENT_ID', 'votre_client_id.apps.googleusercontent.com');define('GOOGLE_CLIENT_SECRET', 'votre_client_secret');define('GOOGLE_REDIRECT_URI', 'https://votre-site.fr/callback.php');

// Inclusion de la bibliothèquerequire_once 'vendor/autoload.php';

use League\\OAuth2\\Client\\Provider\\Google;

// Création du fournisseur$provider = new Google([ 'clientId' => GOOGLE_CLIENT_ID, 'clientSecret' => GOOGLE_CLIENT_SECRET, 'redirectUri' => GOOGLE_REDIRECT_URI,]);?>


login.php



<?phprequire_once 'config.php';

// Génération de l'URL d'autorisation$authUrl = $provider->getAuthorizationUrl([ 'scope' => ['email', 'profile'], // demande de l'email et du profil]);

// Sauvegarde du state pour la protection contre les attaques CSRF$_SESSION['oauth2state'] = $provider->getState();

// Redirection de l'utilisateurheader('Location: ' . $authUrl);exit;?>

<!-- Alternative : bouton en HTML --><a href="<?= htmlspecialchars($authUrl) ?>">Se connecter via Google</a>


callback

Recommendations