Я пытаюсь:
- Войти в Google
- Загрузить CSV-данные из Google Trends
У меня получилось (1), но нетв (2).Мне возвращают авторизационный токен от Google, и я отправляю его с последующим запросом в Trends, но, тем не менее, Google возвращает ошибку: «Вы должны войти в систему, чтобы экспортировать данные из Google Trends»:
// http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html
$data = array(
'accountType' => 'GOOGLE',
'Email' => 'my.email@gmail.com',
'Passwd' => 'my.password',
'service' => 'trendspro',
'source' => 'company-application-1.0'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.google.com/accounts/ClientLogin");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPAUTH, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
preg_match("/Auth=([a-z0-9_\-]+)/i", $response, $matches);
// We now have an authorization-token
$headers = array(
"Authorization: GoogleLogin auth=" . $matches[1],
"GData-Version: 3.0"
);
curl_setopt($ch, CURLOPT_URL, "http://www.google.com/trends/viz?q=MSFT&date=2011-2&geo=all&graph=all_csv&sort=0&sa=N");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, false);
$csv = curl_exec($ch);
curl_close($ch);
// Returns : "You must be signed in to export data from Google Trends"
// Expected: CSV data stream
print_r($csv);
По какой-то причине авторизационные токены, которые я отправляю в Google Trends, не принимаются или игнорируются.Я не знаю точно, что происходит, так как никакой дополнительной информации об ошибках не дано.
Кто-нибудь видит, что я делаю неправильно?Если вы можете заставить его работать, это означает, что Google возвращает данные CSV, то щедрость принадлежит вам, и у нас обоих есть поздний рождественский подарок :-)
Так что я понял, что проблема не имеет ничегоделать с CURL.То, что я сделал:
SID=DQAAAMUAAADMqt...aYPaYniC_iW
LSID=DQAAAMcAAACI5...YDTBDt_xZC9
Auth=DQAAAMgAAABm8...trXgqNv-g0H
GData-Version: 3.0
Authorization: GoogleLogin auth=DQAAAMgAAABm8...trXgqNv-g0H
Заголовки:
Date: Tue, 27 Dec 2011 00:17:20 GMT
Content-Encoding: gzip
Content-Disposition: filename=trends.csv
Content-Length: 97
X-XSS-Protection: 1; mode=block
Server: Google Trends
X-Frame-Options: SAMEORIGIN
Content-Type: text/csv; charset=UTF-8
Cache-Control: private
Данные:
You must be signed in to export data from Google Trends
Другими словами, я отправляю заголовки, как определено Google на http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html, но не получаю правильного возврата.По поводу этого нет никакой информации о паутинах.Кто знает в чем тут проблема?