0

私が抱えている問題は、php 経由で curl を使用して公開されたプレゼンテーションにアクセスしようとすると発生します。通常のドキュメントは curl を介してアクセスできますが、プレゼンテーションはアクセスできません。ドキュメントを取得するこの方法を機能させるか、別の方法を見つけようとしています。Google サポートには回答がなく、推奨されるスタック オーバーフローがありませんでした。

最初に、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)

SSL を有効にするために、開発ボックスにテスト ドメインの vhost を追加しました。この vhost は次の行で始まります。

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

この vhost を追加した後、curl を介してプレゼンテーションにアクセスしようとすると、次のページにリダイレクトされます。

https://support.google.com/accounts/bin/answer.py?hl=ja&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

この件に関して誰かが私に与えることができるヒントや助けをいただければ幸いです。

よろしくお願いします

ウィル・フェラー

4

1 に答える 1