Utilisez PHP pour implémenter l'autorisation et l'authentification tierces basées sur OAuth2
OAuth2 est un protocole standard ouvert utilisé pour autoriser des applications tierces à accéder aux ressources utilisateur pour l'authentification. Il est simple, sécurisé et flexible et est largement utilisé dans diverses applications Web et applications mobiles.
En PHP, nous pouvons implémenter l'autorisation et l'authentification OAuth2 en utilisant des bibliothèques tierces. Cet article combinera des exemples de code pour présenter comment utiliser PHP pour implémenter l'autorisation et l'authentification tierces basées sur OAuth2.
Tout d'abord, nous devons utiliser Composer pour installer une bibliothèque PHP OAuth2. Exécutez la commande suivante dans la ligne de commande :
composer require league/oauth2-client
Une fois l'installation terminée, nous pouvons utiliser l'extrait de code suivant pour implémenter le processus d'autorisation OAuth2.
<?php require 'vendor/autoload.php'; use LeagueOAuth2ClientProviderGenericProvider; $provider = new GenericProvider([ 'clientId' => 'your_client_id', 'clientSecret' => 'your_client_secret', 'redirectUri' => 'http://localhost/callback.php', 'urlAuthorize' => 'https://authorization-server.com/auth', 'urlAccessToken' => 'https://authorization-server.com/token', 'urlResourceOwnerDetails' => 'https://api.server.com/userinfo' ]); // 获取授权地址 $authorizationUrl = $provider->getAuthorizationUrl(); // 将授权地址重定向到用户 header('Location: ' . $authorizationUrl);
Dans le code ci-dessus, nous créons d'abord un objet GenericProvider
et devons transmettre les informations de configuration pertinentes. Parmi eux, clientId
et clientSecret
sont l'ID d'application et la clé secrète fournis par le serveur d'autorisation ; redirectUri
est l'adresse de redirection une fois l'autorisation terminée par l'utilisateur ; ; urlAuthorize
est l'adresse d'autorisation du serveur d'autorisation ; urlAccessToken
est l'adresse d'acquisition du jeton du serveur d'autorisation ; urlResourceOwnerDetails
est l'adresse d'interface pour l'obtention ; informations utilisateur. GenericProvider
对象,需要传入相关的配置信息。其中,clientId
和clientSecret
是由授权服务器提供的应用程序标识和秘钥;redirectUri
是用户完成授权后重定向的地址;urlAuthorize
是授权服务器的授权地址;urlAccessToken
是授权服务器的令牌获取地址;urlResourceOwnerDetails
是获取用户信息的接口地址。
接下来,我们使用getAuthorizationUrl
方法获取授权地址,然后将其重定向给用户。用户将通过授权地址进行登录并授权,然后将被重定向回我们提供的redirectUri
地址。
我们还需要创建一个回调页面callback.php
来处理用户完成授权后的重定向。以下是callback.php
的代码示例:
<?php require 'vendor/autoload.php'; use LeagueOAuth2ClientProviderGenericProvider; $provider = new GenericProvider([ 'clientId' => 'your_client_id', 'clientSecret' => 'your_client_secret', 'redirectUri' => 'http://localhost/callback.php', 'urlAuthorize' => 'https://authorization-server.com/auth', 'urlAccessToken' => 'https://authorization-server.com/token', 'urlResourceOwnerDetails' => 'https://api.server.com/userinfo' ]); // 获取令牌 $token = $provider->getAccessToken('authorization_code', [ 'code' => $_GET['code'] ]); // 使用令牌获取用户信息 $user = $provider->getResourceOwner($token); // 输出用户信息 echo 'User ID: ' . $user->getId() . '<br>'; echo 'User Name: ' . $user->getName() . '<br>';
在callback.php
中,我们通过getAccessToken
方法获取用户授权后返回的令牌,然后使用这个令牌通过getResourceOwner
getAuthorizationUrl
pour obtenir l'adresse d'autorisation puis la redirigeons vers l'utilisateur. L'utilisateur se connectera et autorisera via l'adresse d'autorisation, puis sera redirigé vers l'adresse redirectUri
que nous fournissons. Nous devons également créer une page de rappel callback.php
pour gérer la redirection une fois que l'utilisateur a terminé l'autorisation. Voici un exemple de code de callback.php
: rrreee
Danscallback.php
, nous obtenons le token renvoyé après autorisation de l'utilisateur via le getAccessToken
jeton de méthode, puis utilisez ce jeton pour obtenir les informations de l'utilisateur via la méthode getResourceOwner
. Ce qui précède est un exemple de code permettant d'utiliser PHP pour implémenter l'autorisation et l'authentification tierces basées sur OAuth2. Grâce à ces codes, nous pouvons mettre en œuvre la connexion par autorisation utilisateur et obtenir des informations sur les utilisateurs autorisés. 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!