Maison  >  Article  >  développement back-end  >  Comment utiliser OAuth en programmation PHP ?

Comment utiliser OAuth en programmation PHP ?

WBOY
WBOYoriginal
2023-06-12 08:04:361622parcourir

OAuth est un standard ouvert permettant aux utilisateurs d'autoriser des applications tierces à accéder à leurs ressources protégées, telles que des données ou des photos. En programmation PHP, l'utilisation d'OAuth peut nous aider à gérer facilement les interactions avec des services tiers. Cet article explique comment utiliser OAuth en PHP pour l'autorisation, l'authentification et l'accès à des services tiers.

Comment fonctionne OAuth

Avant d'utiliser OAuth, vous devez comprendre comment fonctionne OAuth. Le processus OAuth peut être divisé en trois étapes : demander un jeton, l'autorisation de l'utilisateur et utiliser le jeton pour accéder aux ressources. Où le jeton est l'identifiant utilisé pour autoriser l'accès à la ressource protégée. Lors de la demande d'un jeton, nous devons spécifier un identifiant client et un secret client pour vérifier l'identité. Après autorisation, l'utilisateur obtiendra un jeton d'accès, qui pourra être utilisé pour accéder aux ressources protégées. Nous devons inclure ce jeton dans l'en-tête de la requête HTTP lors de l'accès à la ressource.

Le workflow d'OAuth est le suivant :

  1. Le client demande un token au serveur d'autorisation.
  2. Le serveur d'autorisation vérifie l'identité du client et, si l'authentification réussit, renvoie un code d'autorisation au client.
  3. Le client envoie le code d'autorisation au serveur de tokens pour obtenir le token d'accès.
  4. Le serveur de tokens vérifie la validité du code d'autorisation et envoie le token d'accès au client.
  5. Le client doit inclure le jeton d'accès dans l'en-tête de la requête lors de l'envoi de chaque requête HTTP.

Comment utiliser OAuth en PHP

Pour utiliser OAuth en PHP, vous devez utiliser une bibliothèque OAuth. Actuellement, il existe de nombreuses bibliothèques OAuth parmi lesquelles choisir, notamment php-oauth, oauth2-server-php, league/oauth2-client, etc. Voici comment utiliser OAuth en utilisant php-oauth.

  1. Installer php-oauth

Avant d'utiliser php-oauth, vous devez d'abord installer la bibliothèque. Vous pouvez installer php-oauth à l'aide de la commande suivante :

composer require php-oauth/oauth1:^1.0
  1. Créer un client OAuth

La création d'un client OAuth nécessite de spécifier trois paramètres : l'ID client, le secret client et le point de terminaison de l'API. Dans le point de terminaison de l'API, vous devez spécifier l'URL du jeton de demande et obtenir l'URL du jeton d'accès.

use OAuthOAuth1ClientServerTwitter;

$client = new Twitter([
    'identifier'   => 'client_id',
    'secret'       => 'client_secret',
    'callback_uri' => 'http://your-callback-url.com',
    'token_url'    => 'https://api.twitter.com/oauth/request_token',
    'auth_url'     => 'https://api.twitter.com/oauth/authorize',
    'api_url'      => 'https://api.twitter.com'
]);
  1. Demande d'un jeton

Lors de la demande d'un jeton, vous devez envoyer une demande au serveur d'autorisation. Dans la bibliothèque php-oauth, nous pouvons demander un token en utilisant la méthode getTemporaryCredentials. getTemporaryCredentials方法请求令牌。

$temporaryCredentials = $client->getTemporaryCredentials();

该方法返回临时凭据,用于用于使用授权服务作进一步请求,完成授权。

  1. 用户授权

在用户授权之前,需要向授权服务器发送一个授权请求。在php-oauth库中,我们可以使用getAuthorizationUrl方法获取授权URL.

$authorizationUrl = $client->getAuthorizationUrl($temporaryCredentials);

将该URL提供给用户以获取授权,完成授权后,将会重定向到我们指定的回调URL中,附带有授权码。

  1. 使用授权码获取访问令牌

在授权码获得之后,我们需要使用该授权码获取访问令牌。在php-oauth库中,我们可以使用getTokenCredentials方法。

$tokenCredentials = $client->getTokenCredentials($temporaryCredentials, $_GET['oauth_token'], $_GET['oauth_verifier']);

该方法将返回访问令牌,可以用于后续的请求。

  1. 使用访问令牌访问资源

在访问受保护资源时,我们需要在HTTP请求的头中包含访问令牌。在php-oauth库中,我们可以使用get

$response = $client->get('https://api.twitter.com/1.1/account/verify_credentials.json', $tokenCredentials);

Cette méthode renvoie des informations d'identification temporaires, qui sont utilisées pour effectuer d'autres demandes en utilisant le service d'autorisation pour finaliser l'autorisation.

    Autorisation utilisateur

    Avant que l'utilisateur n'autorise, une demande d'autorisation doit être envoyée au serveur d'autorisation. Dans la bibliothèque php-oauth, nous pouvons utiliser la méthode getAuthorizationUrl pour obtenir l'URL d'autorisation

    rrreee🎜 Fournissez l'URL à l'utilisateur pour obtenir l'autorisation, une fois l'autorisation terminée, elle sera redirigée vers. l'URL de rappel que nous avons spécifiée est accompagnée d'un code d'autorisation. 🎜
      🎜Utilisez le code d'autorisation pour obtenir le jeton d'accès🎜🎜🎜Une fois le code d'autorisation obtenu, nous devons utiliser le code d'autorisation pour obtenir le jeton d'accès. Dans la bibliothèque php-oauth, on peut utiliser la méthode getTokenCredentials. 🎜rrreee🎜Cette méthode renverra un jeton d'accès qui pourra être utilisé pour les requêtes ultérieures. 🎜
        🎜Accéder aux ressources à l'aide de jetons d'accès🎜🎜🎜Lors de l'accès à des ressources protégées, nous devons inclure le jeton d'accès dans l'en-tête de la requête HTTP. Dans la bibliothèque php-oauth, nous pouvons utiliser la méthode get pour envoyer la requête et inclure le jeton d'accès. 🎜rrreee🎜Après avoir obtenu la réponse, nous pouvons traiter les données renvoyées par l'API. 🎜🎜Résumé🎜🎜L'utilisation d'OAuth nous permet d'autoriser facilement les utilisateurs et d'accéder aux ressources protégées. Dans la programmation PHP, il existe de nombreuses bibliothèques OAuth parmi lesquelles choisir, notamment php-oauth, oauth2-server-php, league/oauth2-client, etc. Lorsque nous utilisons OAuth, nous devons comprendre son fonctionnement et suivre le processus d'utilisation de la bibliothèque OAuth. 🎜

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