estoy tratando de:Tratando de iniciar sesión en Google con el fin de descargar los datos de Google Trends
- sesión en Google
- datos Descargar CSV de Google Trends
estoy teniendo éxito en (1) pero no en (2). Consigo regresar una autorización token de Google, y lo envío a la solicitud con posterioridad a las tendencias, pero sin embargo Google a continuación, devuelve un error: "Debe haber iniciado sesión para exportar los datos de Google Trends":
// http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html
$data = array(
'accountType' => 'GOOGLE',
'Email' => '[email protected]',
'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);
Por algún motivo, los auth-tokens que envío a Google Trends no se aceptan ni se ignoran. No sé exactamente qué sucede, ya que no se proporciona información de error adicional.
¿Alguien ve lo que estoy haciendo mal? Si se puede conseguir que funcione, lo que significa que Google está devolviendo los datos CSV, entonces la recompensa es la suya y ambos tenemos un late presente :-) Navidad
Así que pensé que el problema no tiene nada que ver con cURL. Lo que hice fue:
- Vaya a https://www.google.com/accounts/ClientLogin?accountType=GOOGLE&[email protected]&Passwd=my.password&service=trendspro&source=ding-dang-1. El retorno es:
SID=DQAAAMUAAADMqt...aYPaYniC_iW LSID=DQAAAMcAAACI5...YDTBDt_xZC9 Auth=DQAAAMgAAABm8...trXgqNv-g0H
- copio el token de autenticación devuelto: DQAAAMgAAABm8 ... trXgqNv-g0H
- que enviar una petición GET utilizando la extensión de Chrome para cartero http://www.google.com/trends/viz?q=MSFT&date=2011-2&geo=all&graph=all_csv&sort=0&sa=N utilizando el encabezado:
GData-Version: 3.0 Authorization: GoogleLogin auth=DQAAAMgAAABm8...trXgqNv-g0H
- consigo devuelto:
encabezados:
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
de datos:
You must be signed in to export data from Google Trends
En otras palabras, estoy enviando cabeceras como se define por Google en http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html pero sin suerte conseguir un rendimiento adecuado. Hay información sobre * no * en Interwebs sobre esto. ¿Quién sabe cuál es el problema aquí?
Ha marcado aquí http://stackoverflow.com/questions/4986758/oauth-google-trends-download-csv-file – Pateman
Gracias por la sugerencia. Su enlace me llevó a http://stackoverflow.com/questions/1656446/download-csv-from-google-insight-for-search, pero esto tampoco soluciona el problema. Estoy haciendo exactamente lo que se explicó allí pero sin suerte, y no puedo ver lo que estoy haciendo mal ... – Pr0no
No estoy seguro de si esto ayuda, pero un tipo tuvo un problema al acceder a los sitios web HTTPS usando cURL y su problema fue resuelto aquí: http://stackoverflow.com/questions/316099/cant-connect-to-https-site-using-curl-returns-0-length-content-instead-what-c – Pateman