6

我需要一个 HTML 页面来使用 Javascript 中的 (XHR) 访问 Google Drive 文件XMLHttpRequest而无需身份验证(因此我的用户不必登录或拥有 Google 帐户)。这些文件具有“任何有链接的人”的权限。由于这些文件对全世界开放(有链接),我不明白为什么允许跨域资源共享 (CORS) 会成为问题。

需要身份验证,所以我想这downloadUrl不是一个可行的选择。我还查看了webViewLink,我猜这要求文件是“在网络上公开” - 我猜是在搜索引擎等中出现。这对我来说也不是一个可行的选择。我需要这些文件的“任何有链接的人”权限。最有希望的链接是webContentLink,根据http://googleappsdeveloper.blogspot.se/2012/08/5-things-you-didnt-know-you-could-do.html允许公开和未经身份验证的访问。

我遇到的问题webContentLink是它似乎对 CORS 不友好。我在 Chrome 中使用 XHR 的尝试失败了(非常安静)。我不添加任何标题。

我尝试curl使用--header "Origin: http://www.hello.se"和不使用都会--header "Access-Control-Request-Method: GET"导致HTTP/1.1 302 Moved Temporarily重定向到短暂的内容 URL。问题是重定向响应没有Access-Control-Allow-Origin标头的迹象,这是启用 CORS 所必需的。

我可以做些什么不同的事情来让它发挥作用吗?

否则谷歌 SDK 团队,你能让webContentLinkCORS 对公共文件友好吗(不需要 cookie 身份验证),好吗?

4

2 回答 2

1

JSONP 似乎是从客户端动态获取谷歌表格的唯一方法:

1) 在 Google Drive 中,在网络上发布文档并将共享选项设置为公开

2) 使用 JSON 类型链接以 JSON 格式导出您的数据,它看起来像:“ http://spreadsheets.google.com/feeds/list/YOUR_FILE_ID/od6/public/values?alt=json&callback=myCallback ”。您需要附加 &callback=myCallback 才能使用 JSONP。您可以使用 jQuery 进行 JSONP 调用。

3)定义一个window.myCallback JS函数来使用数据

于 2015-10-02T11:32:53.737 回答
0

您可以尝试使用 JS Google API 客户端。它通过下载代理 iframe 绕过 CORS 限制。

于 2013-08-29T15:20:52.230 回答