【问题标题】:Retrieving a public spreadsheet document with cfhttp使用 cfhttp 检索公共电子表格文档
【发布时间】:2012-04-10 04:59:08
【问题描述】:

我有一个应用程序当前检索 excel 格式的 google 电子表格并将 xls 文件保存到文件系统。它在 riaforge 上使用 ColdFusion google Api 包装器,http://cfgoogle.riaforge.org/

包装器正在使用 google 帐户进行身份验证,然后使用 cfhttp 以二进制格式下载文件。检索文档的 url 如下所示。 https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key=#urlEncodedFormat(arguments.id)#&fmcmd=#spreadSheetFormat(arguments.format)#

我想更改应用程序的行为,以便它直接从公开共享的文档 url 下载文档,但如果我使用公共文档 url,我最终会得到一个 xls 文件,告诉我我的浏览器没有满足最低要求,因此我正在接受基于 Web 的视图。如果我使用 google docs api 包装器使用的相同 url 格式,那么即使我传递了公共文档的 id,我也需要进行身份验证。

我已经搜索了 Google api 文档,但我一直无法找到正确的 url 格式来请求公共文档,以便我可以使用 cfhttp 直接下载二进制格式的电子表格?我需要下载 xls 格式的公共电子表格而不使用 cffhttp 进行身份验证的格式是什么?

【问题讨论】:

    标签: coldfusion google-docs google-docs-api


    【解决方案1】:

    Google 很可能会读取请求的“user_agent”变量。在 CF 中,默认情况下这个变量是带有 Coldfusion 或 java 的。尝试将“useragent”属性添加到 cfhttp 请求并使用常见的东西 - 例如“Mozilla/5.0 (Windows NT 6.1; WOW64)”。

    【讨论】:

    • 我试了一下,我最终得到的电子表格是我假设的网络响应,要求我进行身份验证,但如果我将 url 传递到实际浏览器中,公共电子表格在我未通过谷歌身份验证的情况下显示。我不确定为什么在浏览器中执行 url 和通过 cfhttp 执行 url 的行为会有所不同?
    • 那么可能还有更多内容。我将使用 Firebug 检查从 FF 发送到 google 的原始请求(成功的请求),然后查看是否涉及其他变量或标头或 cookie。这很可能是反复试验:)
    • 好像没有验证就不能下载电子表格了?这可能是真正的问题,有没有人知道下载公共 google 电子表格所需的 url 格式而不进行身份验证。
    • 您可以尝试 Ray 的 Google API cfc - 也许他有一种身份验证方法。 cfgoogle.riaforge.org。实际上——他确实有一种身份验证方法。
    • 我实际上已经在应用程序中使用 Ray 的 Google API cfc 有一段时间了,但希望能够在不验证用户身份的情况下提取电子表格。我不想存储他们的 Google 帐户信息,或者要求他们在此过程中传递它。该应用程序正在从电子表格中导入数据,我希望我可以让用户将电子表格的公共 url 值存储在他们的帐户中,然后使用该 url 从电子表格中提取数据。我只是无法弄清楚如何使用 cfhttp 获取电子表格,而无需先进行身份验证,即使使用公共文档也是如此。
    【解决方案2】:

    我最终不得不在 riaforge 上使用 Ray 的 Google API cfc 进行身份验证。使用我自己的帐户进行身份验证后,我可以将公共电子表格的 ID 传递给 google cfc 的下载功能,并且可以将电子表格下载为 xls 文件。我无法找到一种不经过身份验证就可以下载它的方法,但是这种方法将使最终用户不必使用他们的帐户进行身份验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-25
      • 1970-01-01
      • 1970-01-01
      • 2016-08-23
      • 2010-12-26
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      相关资源
      最近更新 更多