J'essaie de récupérer une liste de blogs d'un utilisateur donné. Je pense que j'ai réussi à m'autoriser avec tous les trucs symboliques, mais quand je demande le blog de liste, je reçois un 302 déplacé temporairement. J'utilise curl pour envoyer les demandes.AuthSub et Blogger
Dans ma page de rappel, mettre à niveau le jeton à un jeton de session:
$header = array();
$header[] = 'GET /accounts/AuthSubSessionToken HTTP/1.1';
$header[] = 'Authorization: AuthSub token="'.$_GET['token'].'"';
$curl = curl_init('https://www.google.com/accounts/AuthSubSessionToken');
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($curl);
-je obtenir cette réponse:
HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8
Date: Thu, 15 Jul 2010 20:08:07 GMT
Expires: Thu, 15 Jul 2010 20:08:07 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Content-Length: 39
Server: GSE
Ok, maintenant je pense que je suis prêt à la récupération de données, Je fais ceci:
$headers = array();
$headers[] = 'GET /feeds/default/blogs HTTP/1.1';
$headers[] = 'Authorization: AuthSub token="'.$token.'"';
$headers[] = 'Host: www.blogger.com';
$curl = curl_init('http://www.blogger.com');
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 5);
curl_setopt($curl, CURLOPT_PORT, 80);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_MAXREDIRS, 5);
$reply = curl_exec($curl);
Mais je reçois toujours un 302 déplacé temporairement. J'ai vérifié que je ne l'ai pas permis safe_mode ni openbasedir pour permettre le travail de CURLOPT_FOLLOWLOCATION, et j'ai aussi vérifié avec
curl_getinfo($curl, CURLINFO_EFFECTIVE_URL);
ce qui était la dernière url demandée pour être sûr boucle tente la redirection.
Peut-être que j'ai fait un pas d'AuthSub faux? De toute évidence, j'ai utilisé le code qui extrait le jeton de session, mais je l'ai vérifié deux fois et j'ai saisi la bonne partie de l'en-tête.
Ok je l'ai résolu. J'avais besoin de définir l'URL pour le troisième curl_init: http://www.blogger.com/feeds/default/blogs 'qui a résolu mon problème. –