Maison >développement back-end >tutoriel php >Comment puis-je maintenir une session Curl active pour éviter les erreurs 401 non autorisées lors de l'accès aux API ?
Pour vous connecter à une API, authentifier un utilisateur et afficher les détails de l'utilisateur, vous devez d'abord vous connecter et obtenir un cookie de session . Cependant, lorsque vous utilisez Curl, vous pouvez rencontrer une erreur 401 non autorisée lorsque vous essayez d'accéder aux détails de l'utilisateur. Cela se produit car Curl doit conserver le cookie de session pour permettre la communication entre les différents points de terminaison.
Le code fourni se boucle vers le point de terminaison de connexion et enregistre le pot de cookies. Cependant, pour envoyer des cookies enregistrés lors de demandes ultérieures, vous devez également définir CURLOPT_COOKIEFILE sur le même pot de cookies. Cela fournira à Curl les informations nécessaires pour maintenir la session et récupérer avec succès les détails de l'utilisateur.
Le code corrigé est le suivant :
define("COOKIE_FILE", "cookie.txt"); // Login the user $ch = curl_init('http://api.example.com/login/joe/smith'); curl_setopt ($ch, CURLOPT_COOKIEJAR, COOKIE_FILE); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); echo curl_exec ($ch); // Read the session saved in the cookie file echo "<br /><br />"; $file = fopen("cookie.txt", 'r'); echo fread($file, 100000000); echo "<br /><br />"; // Get the users details $ch = curl_init('http://api.example.com/user'); curl_setopt ($ch, CURLOPT_COOKIEJAR, COOKIE_FILE); **curl_setopt ($ch, CURLOPT_COOKIEFILE, COOKIE_FILE);** // **Set the cookie file** curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); echo curl_exec ($ch);
En ajoutant CURLOPT_COOKIEFILE, Curl maintiendra désormais la session cookie et accéder avec succès aux détails de l'utilisateur.
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!