Maison >développement back-end >tutoriel php >Implémenter la connexion et l'autorisation de tiers à l'aide de PHP et OAuth2

Implémenter la connexion et l'autorisation de tiers à l'aide de PHP et OAuth2

PHPz
PHPzoriginal
2023-06-25 18:33:221050parcourir

Avec le développement et la vulgarisation continus d'Internet, de plus en plus de sites Web et d'applications fourniront des services de connexion et d'autorisation tiers pour permettre aux utilisateurs de s'inscrire et de se connecter rapidement, et également d'obtenir plus facilement les données utilisateur. En tant que norme d'autorisation ouverte courante, OAuth2 est largement utilisé dans les scénarios de connexion et d'autorisation tiers.

Cet article expliquera comment utiliser PHP et OAuth2 pour implémenter la connexion et l'autorisation tierces. Nous utiliserons GitHub comme exemple de plate-forme pour montrer comment utiliser OAuth2 pour obtenir des informations utilisateur et stocker ces informations dans une base de données locale.

1. Tout d'abord, vous devez créer une application OAuth sur GitHub

Créez une application OAuth sur GitHub et enregistrez l'ID client et le secret client générés pour une utilisation ultérieure.

2. Installez la bibliothèque client OAuth2

Pour implémenter OAuth2 en PHP, vous pouvez utiliser une bibliothèque client OAuth2 tierce. Ici, nous utilisons le client PHPleague/oauth2 comme exemple de bibliothèque.

Utilisez Composer pour installer, si Composer n’est pas encore installé, veuillez d’abord l’installer.

Exécutez la commande suivante dans le terminal :

composer require league/oauth2-client

3. Créez le lien d'autorisation

La création du lien d'autorisation est la première étape. À l'aide du lien d'autorisation, l'utilisateur peut être redirigé vers GitHub et demander une autorisation.

Voici un exemple de code pour créer le lien d'autorisation :

<?php

require_once __DIR__ . '/vendor/autoload.php';

$provider = new LeagueOAuth2ClientProviderGithub([
    'clientId'          => 'YOUR_CLIENT_ID',
    'clientSecret'      => 'YOUR_CLIENT_SECRET',
    'redirectUri'       => 'http://localhost:8000/callback.php',
]);

$authUrl = $provider->getAuthorizationUrl([
    'scope' => ['user'],
]);

header('Location: ' . $authUrl);

Ce code effectue les opérations suivantes :

  1. Crée une instance du fournisseur GitHub, fournissant les informations d'application OAuth requises
  2. Utilisation de la méthode getAuthorizationUrl pour obtenir le lien d'autorisation et la redirection l'utilisateur vers ce lien

4. Gérez l'URL de rappel et obtenez le jeton d'accès

Une fois que l'utilisateur aura autorisé votre application sur GitHub, il sera redirigé vers votre application. Dans cette URL de redirection, vous pouvez obtenir le jeton d'accès.

Voici l'exemple de code pour obtenir le jeton d'accès :

<?php

require_once __DIR__ . '/vendor/autoload.php';

$provider = new LeagueOAuth2ClientProviderGithub([
    'clientId'          => 'YOUR_CLIENT_ID',
    'clientSecret'      => 'YOUR_CLIENT_SECRET',
    'redirectUri'       => 'http://localhost:8000/callback.php',
]);

if (!isset($_GET['code'])) {
    die('授权失败:没有授权码!');
} else {
    $accessToken = $provider->getAccessToken('authorization_code', [
        'code' => $_GET['code'],
    ]);
}

echo '访问令牌:' . $accessToken->getToken();

5. Obtenez les données utilisateur et stockez

Maintenant que nous avons obtenu le jeton d'accès, nous pouvons utiliser le jeton d'accès pour obtenir les données utilisateur. Prenons l'exemple de l'obtention d'informations utilisateur :

$user = $provider->getResourceOwner($accessToken);

echo '用户ID:' . $user->getId() . '<br>';
echo '用户名:' . $user->getNickname() . '<br>';
echo '头像URL:' . $user->getAvatarUrl() . '<br>';
echo '主页URL:' . $user->getProfileUrl() . '<br>';

Après avoir obtenu les données utilisateur, nous pouvons stocker les données dans une base de données locale pour une utilisation ultérieure.

6. Résumé

Dans cet article, nous avons présenté comment utiliser PHP et OAuth2 pour implémenter la connexion et l'autorisation tierces. Grâce à un exemple simple, nous avons appris à utiliser la bibliothèque client OAuth2 pour créer des liens d'autorisation, obtenir des jetons d'accès et obtenir des données utilisateur. J'espère que cet article vous sera utile.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn