Maison  >  Article  >  développement back-end  >  Comment utiliser OAuth pour accéder aux données en PHP

Comment utiliser OAuth pour accéder aux données en PHP

王林
王林original
2023-07-29 13:41:00958parcourir

Comment utiliser OAuth en PHP pour accéder aux données

OAuth est une norme ouverte d'autorisation qui permet aux utilisateurs d'accorder à des applications tierces l'autorisation d'accéder à leurs données sans fournir leur nom d'utilisateur et leur mot de passe à l'application tierce. Il est très pratique d'utiliser OAuth pour l'accès aux données en PHP. Cet article explique comment utiliser OAuth pour l'accès aux données et fournit des exemples de code pertinents.

  1. Installer la bibliothèque OAuth

Tout d'abord, nous devons installer la bibliothèque OAuth. En PHP, vous pouvez utiliser composer pour l'installer. Exécutez la commande suivante dans le terminal :

composer require league/oauth2-client
  1. Obtenir l'autorisation OAuth

Avant d'utiliser OAuth pour accéder aux données, nous devons obtenir l'autorisation OAuth correspondante. En règle générale, nous devons demander l'autorisation de l'utilisateur et obtenir un jeton d'accès. Voici un exemple d'utilisation d'OAuth pour l'autorisation utilisateur :

<?php
require_once 'vendor/autoload.php';

use LeagueOAuth2ClientProviderGenericProvider;
use LeagueOAuth2ClientProviderExceptionIdentityProviderException;

$provider = new GenericProvider([
    'clientId'                => 'yourClientId',
    'clientSecret'            => 'yourClientSecret',
    'redirectUri'             => 'http://localhost/callback.php',
    'urlAuthorize'            => 'https://example.com/oauth/authorize',
    'urlAccessToken'          => 'https://example.com/oauth/token',
    'urlResourceOwnerDetails' => 'https://example.com/oauth/resource'
]);

$authUrl = $provider->getAuthorizationUrl();
$_SESSION['oauth2state'] = $provider->getState();

header('Location: ' . $authUrl);

Dans l'exemple ci-dessus, nous avons utilisé la classe GenericProvider fournie par la bibliothèque league/oauth2-client pour l'autorisation OAuth. Il convient de noter que vous devez remplacer clientId, clientSecret, redirectUri, urlAuthorize, urlAccessToken et d'autres paramètres dans l'exemple de code par vos propres valeurs.

  1. Gestion des rappels

Une fois l'utilisateur terminé l'autorisation, le serveur d'autorisation redirigera l'utilisateur vers l'URL de rappel que nous avons fournie, ainsi que des informations telles que le jeton d'accès. Nous devons écrire un gestionnaire pour l'URL de rappel afin de stocker le jeton d'accès renvoyé par le serveur d'autorisation. Voici un exemple de gestion des rappels :

<?php
require_once 'vendor/autoload.php';

use LeagueOAuth2ClientProviderGenericProvider;
use LeagueOAuth2ClientProviderExceptionIdentityProviderException;

$provider = new GenericProvider([
    'clientId'                => 'yourClientId',
    'clientSecret'            => 'yourClientSecret',
    'redirectUri'             => 'http://localhost/callback.php',
    'urlAuthorize'            => 'https://example.com/oauth/authorize',
    'urlAccessToken'          => 'https://example.com/oauth/token',
    'urlResourceOwnerDetails' => 'https://example.com/oauth/resource'
]);

if (!isset($_GET['code'])) {
    exit('Error: No authorization code found');
}

try {
    $accessToken = $provider->getAccessToken('authorization_code', [
        'code' => $_GET['code']
    ]);

    echo 'Access Token: ' . $accessToken->getToken();
} catch (IdentityProviderException $e) {
    exit('Error: ' . $e->getMessage());
}

Dans l'exemple ci-dessus, nous obtenons le jeton d'accès en récupérant le paramètre $_GET['code'] et en passant le code d'autorisation renvoyé par le serveur d'autorisation à la méthode getAccessToken de la bibliothèque OAuth .

  1. Utiliser le jeton d'accès pour l'accès aux données

Après avoir obtenu le jeton d'accès, nous pouvons l'utiliser pour l'accès aux données. Voici un exemple d'utilisation de jetons d'accès pour l'accès aux données :

<?php
require_once 'vendor/autoload.php';

use LeagueOAuth2ClientProviderGenericProvider;
use LeagueOAuth2ClientProviderExceptionIdentityProviderException;

$provider = new GenericProvider([
    'clientId'                => 'yourClientId',
    'clientSecret'            => 'yourClientSecret',
    'redirectUri'             => 'http://localhost/callback.php',
    'urlAuthorize'            => 'https://example.com/oauth/authorize',
    'urlAccessToken'          => 'https://example.com/oauth/token',
    'urlResourceOwnerDetails' => 'https://example.com/oauth/resource'
]);

$accessToken = new LeagueOAuth2ClientTokenAccessToken([
    'access_token' => 'yourAccessToken'
]);

$response = $provider->getAuthenticatedRequest(
    'GET',
    'https://example.com/api/data',
    $accessToken
);

$data = $provider->getParsedResponse($response);

var_dump($data);

Dans l'exemple ci-dessus, nous créons une requête autorisée en créant un objet AccessToken et en passant le jeton d'accès à la méthode getAuthenticatedRequest. Nous pouvons ensuite appeler la méthode getParsedResponse pour obtenir le contenu de la réponse. Notez que vous devez remplacer yourAccessToken dans l’exemple de code par votre propre jeton d’accès.

Résumé :

Cet article explique comment utiliser OAuth pour l'accès aux données en PHP. Tout d’abord, nous devons installer la bibliothèque OAuth. Ensuite, nous devons obtenir l'autorisation OAuth et gérer le rappel. Enfin, nous utilisons des jetons d'accès pour l'accès aux données. En utilisant l'exemple de code ci-dessus, nous pouvons facilement implémenter la fonctionnalité d'autorisation OAuth et d'accès aux données dans les applications PHP.

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