2013-03-27 98 views
0

当我尝试使用curl通过php访问已发布演示文稿时,会出现问题。普通文件可以通过卷曲而不是演示文稿访问。我正在寻找或者使这种检索文档工作的方法或找到一种替代方法。谷歌支持没有答案给我,并建议堆栈溢出。使用curl和php检索Google文档演示文稿时遇到问题

起初,试图访问通过卷曲介绍给了我这个错误:

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) 

我对我的开发增加了一个虚拟主机为我的测试域启用SSL。这个虚拟主机下列行开始:

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

加入这个虚拟主机后,试图通过卷曲重定向我到此页面访问演示:

https://support.google.com/accounts/bin/answer.py?hl=en&answer=32050(告诉我清除了我的饼干,由于有问题我的cookie设置)

我有我的卷曲代码也写了一个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卷曲的代码如下所示:

$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

任何提示或帮助任何一个可以给我在这个问题上会大大赞赏。

问候

威尔·费雷尔

+0

任何想法?任何人?非常感谢。 – 2013-04-08 23:45:20

回答

1

我认为这个问题是与出口语句,你试图将其导出为HTML

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

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

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

在谷歌文档,报告还指出,用于演示值是唯一的以下内容: “PDF”, “PNG” 和 “PPT”。

+0

嗨。非常感谢你的回应。读我的第一篇文章,我想我没有把这个问题弄清楚。目前,我没有使用你上述方法,而是我只是想通过联系其访问已发布的演示文稿的出版经过卷曲网址:https://docs.google.com/presentation/d/1RDANgsJWv841KvQUROKhyikTuwQGXC5Q1XFvXDwAfMw/pub?start=false&loop =假delayms = 3000。你上面描述的方法是我正在考虑用作倒退的一种方法。非常感谢你的协助。 – 2013-04-25 20:31:53

+0

我认为您只能通过浏览器访问您尝试访问的网址。为了下载演示,你应该尝试通过卷曲访问https://docs.google.com/feeds/download/presentations/Export?exportFormat=pdf&id=1RDANgsJWv841KvQUROKhyikTuwQGXC5Q1XFvXDwAfMw。 – Emily 2013-05-09 00:20:40