无法使用curl和php检索谷歌文档演示文稿

时间:2013-03-27 21:24:27

标签: curl google-docs google-docs-api google-drive-api

当我尝试使用curl通过php访问已发布的演示文稿时,我遇到了问题。普通文件可通过卷曲访问,但不能通过演示文稿访我希望使这种方法检索文档工作或找到替代方案。谷歌支持没有给我答案,建议堆栈溢出。

首先,尝试通过curl访问演示文稿给了我这个错误:

Secure Connection Failed

An error occurred during a connection to develop.willf-rtb-dev.switchsoft.com.

SSL received a record that exceeded the maximum permissible length.

(Error code: ssl_error_rx_record_too_long)

我在开发框中为我的测试域添加了一个vhost来启用ssl。这个vhost从以下行开始:

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

添加此虚拟主机后,尝试通过curl访问演示文稿会将我重定向到此页面:

https://support.google.com/accounts/bin/answer.py?hl=en&answer=32050(告诉我由于我的Cookie设置问题而清除我的Cookie)

我的curl代码也写了一个cookie文件 - 尝试通过curl访问演示文稿后,该文件的内容如下所示。清除文件的内容没有用,也没有告诉curl不写入此文件。

# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

#HttpOnly_.google.com    TRUE    /    FALSE    1380146248    NID    67=q47Xyj4FU2_uuYosZzvr_50-o2q9qD0PG8avG3oTg0s2qlmjzGFqT0UhWpwLOEt9TWqP1jf77npfX9OBebQ8fqn6ID7b4b-jBoFbyEbCFkrQhcBIKekLS1fQI-mLw3Pg

我的php curl代码如下所示:

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,3);

$cookieFile = TMP_DIRECTORY . '/curlcookies.txt';
if (!file_exists($cookieFile)) {
file_put_contents($cookieFile, '');
}
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile);

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64; rv:19.0) Gecko/20100101 Firefox/19.0 FirePHP/0.4");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);

$result = curl_exec($ch);
curl_close($ch);
return $result;

我尝试使用这种风格的url来下载演示文稿的html:

https://docs.google.com/feeds/download/presentations/Export?exportFormat=html&format=html&id=1RDANgsJWv841KvQUROKhyikTuwQGXC5Q1XFvXDwAfMw

这需要我登录,当我签名时,它会给我这个错误:

Sorry, the file you have requested does not exist.

Please check the address and try again.

使用exportFormat = pdf时我没有收到此错误 - 只要我已登录就可以运行,但这不是我需要的。

我还没有尝试使用它,但我在这里发现了一些可能值得研究的PHP代码:

https://developers.google.com/drive/manage-downloads

任何人都可以给我这个主题的任何提示或帮助将不胜感激。

祝你好运

Will Ferrer

1 个答案:

答案 0 :(得分:1)

我认为问题出在导出语句中,您尝试将其导出为HTML

https://docs.google.com/feeds/download/presentations/Export?exportFormat=html&format=html&id=1RDANgsJWv841KvQUROKhyikTuwQGXC5Q1XFvXDwAfMw

请注意,在Google演示文稿前端中,它只允许您导出为pdf,pptx,txt,jpg,png,svg。

https://developers.google.com/google-apps/documents-list/v2/reference#ExportParameters

在Google文档中,它还指出演示文稿的值仅限以下内容:“pdf”,“png”和“ppt”。