【发布时间】:2012-06-13 11:51:50
【问题描述】:
我正在尝试使用 google 文档列表 API 和 OAuth 1.0 来从 google docs 下载 pdf 文件的 http 请求。我没有为 oauth 或 google docs 使用任何外部 api。
根据文档,我获得了 pdf 的下载 URL,该 URL 在放置在浏览器中时可以正常工作。
根据文档,我应该发送如下所示的请求:
GET https://doc-04-20-docs.googleusercontent.com/docs/secure/m7an0emtau/WJm12345/YzI2Y2ExYWVm?h=16655626&e=download&gd=true
但是,下载 URL 的参数有一些有趣的地方,它看起来像这样:
https://doc-00-00-docs.googleusercontent.com/docs/securesc/5ud8e...tMzQ?h=15287211447292764666&\;e=download&\;gd=true
(在网址中'&\;'实际上没有'\',但我将其放在帖子中以避免将其转义为'&')。
那么这里的情况是什么?我有 3 个参数 h,e,gd 还是有一个参数 h 的值为 15287211447292764666&ae=download&gd=true,或者我有以下 3 个参数值对:h = 15287211447292764666、amp;e = download、amp;gd = true(我认为是这样吗,这似乎是一个错误)?
为了形成正确的 http 请求,我需要确切地知道参数名称和值是什么,但是我的下载 URL 令人困惑。此外,如果参数名称是 h、amp;e 和 amp;gd,那么包含这些参数的请求是否对获取文件内容有效(如果不是,这似乎是一个错误)。
我下载和上传文档(msword 文档)没有问题,我下载文件的范围是正确的。
我尝试了很多不同的请求。当我单独处理 3 个参数 (h,e,gd) 时,我得到Unauthorized 401。如果我假设我只有一个参数 - h 值为15287211447292764666&ae=download&gd=true 我得到500 Internal Server Error(google api 状态:'API 中发生了意外错误。','如果问题仍然存在,请在论坛中发帖。 ')。
如果我根本不输入任何参数或输入 3 个参数 -h、amp;e、amp;gd,我会得到 302 Found。我尝试按照重定向发送更多请求,但我仍然无法获得实际的 pdf 内容。我还在 OAuth Playground 中进行了实验,但它似乎没有像预期的那样工作。在 OAuth 中使用下载 URL 发送 get 请求会以 302 Found 响应,而不是响应 PDF 内容。
这里发生了什么?如何在响应中获取 pdf 内容?请帮忙。
【问题讨论】:
-
您是如何收到下载网址的?它可能是 HTML 实体编码的。
-
我一直在使用 OAuth Playground 和一个用于发送请求的在线工具 - hurl 发送和浏览响应,他们都在响应正文中使用 & 而不是 & 进行响应。但是,当我使用另一个在线工具 - api kitchen 时,URL 是正确的 - 没有放大器,所以你必须在这里,非常感谢:) 但是我已经尝试发送请求以获取带有参数 e、gd、h 和 I 的文件我得到 401 未经授权
-
再想一想,我仍然不确定 http 实体编码,我假设 OAuth Playground 和 hurl 编码了实际响应而 api kitchen 没有,但是在浏览器中放置带有 &s 的 url 有效- 它会打开 pdf,如果我使用来自 api kitchen 的 url - 使用 & 而不是 &s 我在浏览器中什么也得不到,所以也许实体编码在 google 端并且 api kitchen 进行了解码,我在这里很困惑
-
别介意前面的评论 - 如果我在登录到 gmail 时将下载 URL 放入浏览器(不需要授权)并且我使用 3 个参数 h、e、gd 什么都不会发生,如果我不这样做'不要将所有 3 个参数都放在 URL 中,pdf 内容会显示在浏览器中,所以显然拥有 3 个参数并没有什么特别之处 - h、&h、&gd
标签: oauth google-docs google-docs-api google-drive-api