2010-07-15 55 views
0

我試圖檢索給定用戶的博客列表。 我想我已經連續授權我所有的令牌,但當我要求列表博客時,我收到一個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:很明顯,我忽略了提取會話令牌的代碼,但我仔細檢查了它,並且獲取了頭部正確的部分。

+0

好,我解決了它。我需要設置第三個curl_init的URL:http://www.blogger.com/feeds/default/blogs'解決了我的問題。 – 2010-07-16 04:24:57

回答

1

如果你檢查curl_getinfo($curl);的輸出,你會得到一個redirect_count?如果是這樣的話:如果是5,我會將maxredirs設置得更高。

如果沒有,我會設置

curl_setopt($curl,CURLOPT_VERBOSE,true); 
curl_setopt($curl,CURLOPT_STDERR, STDOUT) 

...並檢查它的輸出。

也許這是因爲設置這個簡單(永遠不會與Blogger界面的工作):

curl_setopt($curl,CURLOPT_UNRESTRICTED_AUTH,true); 
+0

重定向計數說2,所以我的設置是(現在)足夠了。無論如何,我解決了它,這是指定的網址的問題。 – 2010-07-16 04:25:58