Mit Curl und PHP die Sitzung am Leben erhalten

Ich versuche, eine Verbindung zu einer API herzustellen, einen Benutzer zu authentifizieren und dann die Benutzerdetails anzuzeigen. Dies wird erreicht, indem Sie zuerst auf den Anmeldeendpunkt unter zugreifen

http://api.example.com/login/<username>/<password>

Um sich anzumelden und dann Folgendes, um die Benutzerdetails anzuzeigen:

http://api.example.com/user/

Dies alles funktioniert in einem Webbrowser. Sobald ich jedoch versuche, Curl zu verwenden, funktioniert die Anmeldung einwandfrei. Wenn ich jedoch versuche, Benutzerdetails anzuzeigen, erhalte ich einen nicht autorisierten Fehler 401 zurück. Ich glaube, das liegt daran, dass Curl die Sitzungscookies nicht richtig speichert. Kann jemand darauf hinweisen, warum es nicht funktioniert und wie man es behebt? Ich habe versucht, den Stapelaustausch zu durchsuchen, aber keine der Lösungen, die ich ausprobiert habe, hat für meine Situation funktioniert. Der Code, den ich zum Einrollen der Endpunkte verwende, wird unten angezeigt. Vielen Dank!

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_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
echo curl_exec ($ch);

Dieser Code gibt Folgendes aus:

HTTP/1.1 200 OK Date: Mon, 22 Oct 2012 21:23:57 GMT Server: LiteSpeed Connection: close X-Powered-By: PHP/5.3.14 Set-Cookie: cfapi=f481129c9616b8f69cc36afe16466545; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Type: application/json X-Powered-By: CFWAPI 0.1a Content-Length: 46 {"status":200,"msg":"Successfully Logged In."}

# Netscape HTTP Cookie File # http://curl.haxx.se/rfc/cookie_spec.html # This file was generated by libcurl! Edit at your own risk. api.example.com FALSE   /   FALSE   0   cfapi 94f63b07ccf7e34358c1c922341c020f 

HTTP/1.1 401 Unauthorized Date: Mon, 22 Oct 2012 21:23:57 GMT Server: LiteSpeed Connection: close X-Powered-By: PHP/5.3.14 Set-Cookie: cfapi=a8eb015a7c423dde95aa01579c4729a4; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Type: application/json X-Powered-By: CFWAPI 0.1a Content-Length: 49 {"status":401, "msg":"You need to login first!"}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage