«Вы должны войти в систему, чтобы экспортировать данные из Google Trends» ... Что я делаю не так? - PullRequest
1 голос
/ 26 декабря 2011

Шаги для воспроизведения: запустите следующий код (с вашим адресом электронной почты / паролем):

$data = array(
  'accountType' => 'HOSTED_OR_GOOGLE',
  'Email'       => 'your.email@google.com',
  'Passwd'      => 'your.password',
  'service'     => 'trendspro',
  'source'      => 'company-application-1.0'
);

$ch = curl_init("https://www.google.com/accounts/ClientLogin");
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  $response = curl_exec($ch);
curl_close($ch);

preg_match("/Auth=([a-z0-9_\-]+)/i", $response, $matches);

$headers = array(
  "Authorization: GoogleLogin auth=" . $matches[1],
  "GData-Version: 3.0",
);

$ch = curl_init("http://www.google.com/trends/viz?q=MSFT&date=2011-2&geo=all&graph=all_csv&sort=0&sa=N");
  curl_setopt($ch, CURLOPT_POST, false);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  $csv = curl_exec($ch);
curl_close($ch);

print_r($csv);

Ожидаемый результат - поток данных http, который можно сохранить в виде файла .csv на сервере,Но выводится ошибка: «Вы должны войти в систему, чтобы экспортировать данные из Google Trends».Это неожиданно, поскольку я отправляю строку авторизации, возвращенную из первого запроса, вместе с запросом Google Trends.

Что я делаю не так?

1 Ответ

0 голосов
/ 26 декабря 2011

Попробуйте добавить "hl" => "nl", в массив $ data , так как мне кажется, что google.nl требуется отдельный логин.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...