Tôi cố gắng để:Đang cố gắng để đăng nhập vào Google để tải dữ liệu Google Trends
- Đăng nhập vào Google
- Tải xuống dữ liệu CSV từ Google Trends
Tôi thành công trong (1) nhưng không phải trong (2). Tôi có được trả lại một phép-token từ Google, và đang gửi nó với các yêu cầu tiếp theo để Xu hướng, tuy nhiên Google sau đó trả về một lỗi: "Bạn phải đăng nhập để xuất dữ liệu từ 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);
Vì một số lý do, mã thông báo xác thực tôi gửi tới Google Xu hướng, không được chấp nhận hoặc bị bỏ qua. Tôi không biết chính xác điều gì xảy ra, vì không có thông tin lỗi bổ sung nào được đưa ra.
Có ai nhìn thấy những gì tôi đang làm sai không? Nếu bạn có thể lấy nó để làm việc, có nghĩa là Google đang trở lại các dữ liệu CSV, sau đó tiền thưởng là của bạn và cả hai chúng tôi có một cuối Giáng :-) hiện
Vì vậy, tôi đã tìm ra vấn đề không có gì để làm với cURL. Những gì tôi đã làm là:
- Chuyển đến https://www.google.com/accounts/ClientLogin?accountType=GOOGLE&[email protected]&Passwd=my.password&service=trendspro&source=ding-dang-1. Sự trở lại là:
SID=DQAAAMUAAADMqt...aYPaYniC_iW LSID=DQAAAMcAAACI5...YDTBDt_xZC9 Auth=DQAAAMgAAABm8...trXgqNv-g0H
- tôi sao chép Auth thẻ trả về: DQAAAMgAAABm8 ... trXgqNv-g0H
- tôi gửi một yêu cầu GET sử dụng phần mở rộng Postman Chrome để http://www.google.com/trends/viz?q=MSFT&date=2011-2&geo=all&graph=all_csv&sort=0&sa=N sử dụng tiêu đề:
GData-Version: 3.0 Authorization: GoogleLogin auth=DQAAAMgAAABm8...trXgqNv-g0H
- tôi có được trả lại:
tiêu đề:
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
dữ liệu:
You must be signed in to export data from Google Trends
Nói cách khác, tôi gửi tiêu đề theo quy định của Google trên http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html nhưng không có may mắn nhận được một lợi nhuận thích hợp. Có khoảng * không * thông tin về Interwebs liên quan đến điều này. Ai biết được vấn đề là gì?
Bạn đã kiểm tra tại đây http://stackoverflow.com/questions/4986758/oauth-google-trends-download-csv-file – Pateman
Cảm ơn mẹo. Liên kết của bạn đã đưa tôi đến http://stackoverflow.com/questions/1656446/download-csv-from-google-insight-for-search, nhưng điều này cũng không khắc phục được sự cố. Tôi đang làm chính xác như được giải thích trên đó nhưng không may mắn, và tôi không thể nhìn thấy những gì tôi đang làm sai ... – Pr0no
Không chắc chắn nếu điều này giúp, nhưng một anh chàng đã có một vấn đề với truy cập vào các trang web HTTPS bằng cách sử dụng cURL và vấn đề của mình đã được giải quyết tại đây: http://stackoverflow.com/questions/316099/cant-connect-to-https-site-using-curl-returns-0-length-content-instead-what-c – Pateman