我試圖檢索給定用戶的博客列表。 我想我已經連續授權我所有的令牌,但當我要求列表博客時,我收到一個302臨時移動。 我正在使用curl發送請求。AuthSub和Blogger
在我的回調頁面,我的令牌升級爲會話令牌:
$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);
什麼要求,以確保捲曲試圖重定向最後瀏覽的網址進行檢查。
也許我做了一些AuthSub一步錯了?
PD:很明顯,我忽略了提取會話令牌的代碼,但我仔細檢查了它,並且獲取了頭部正確的部分。
好,我解決了它。我需要設置第三個curl_init的URL:http://www.blogger.com/feeds/default/blogs'解決了我的問題。 – 2010-07-16 04:24:57