Я пытаюсь получить список блогов данного пользователя.Я думаю, что я успешно авторизовался со всеми токенами, но когда я спрашиваю о списке блогов, я временно получаю 302 перемещенных.Я использую curl для отправки запросов.
На своей странице обратного вызова я обновляю токен до токена сеанса:
$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 );
Я получаю этот ответ:
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
Хорошо, теперь я думаю, что я готов к извлечению данных, я делаю это:
$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 );
Но я всегда получаю 302 перемещенных временно.Я проверил, что я не включил ни safe_mode, ни openbasedir, чтобы разрешить работу CURLOPT_FOLLOWLOCATION, и я также проверил с помощью
curl_getinfo( $curl, CURLINFO_EFFECTIVE_URL );
, какой последний URL запрашивался, чтобы убедиться, что curl пытается перенаправить.
Может быть, я сделал какой-то неверный шаг AuthSub?
PD: Очевидно, я пропустил код, который извлекает маркер сеанса, но я дважды проверил его и выхватил правильную часть заголовка.