【问题标题】:Downloading from Google Docs using an Uri containing access_token使用包含 access_token 的 Uri 从 Google Docs 下载
【发布时间】:2012-05-14 14:44:44
【问题描述】:

我正在为 Windows Phone 7 创建一个查看器应用程序。该应用程序已经处理了 OAuth2 内容并成功浏览了 Google Doc 的文件夹结构。

我使用Google Documents List API 3。 BTW 浏览在不使用请求标头的情况下完美运行,而是将 access_token 附加到请求 Uri。

现在应用程序需要向用户显示文件,如果可能,无需先下载文件。这意味着我想将 UI 的 Image.Source 设置为图像的 Uri,将 UI 的 MediaElement.Source 设置为视频的 Uri,将 BackgroundAudioPlayer.Track.Source 设置为音频文件的 Uri。显然我不能在这种情况下使用请求标头。

但是,简单地将 access_token 附加到下载 Uri 似乎是行不通的。 UI 元素失败并显示一般错误消息,如果我手动尝试使用网络浏览器(未登录到 Google),它会显示一个空白屏幕、401 错误或重定向到 Google 的登录页面。

是否可以仅通过定义 Uri 来下载/流式传输 Google 数据条目?如果是,Uri 需要是什么样的?

【问题讨论】:

    标签: oauth-2.0 google-docs-api google-drive-api


    【解决方案1】:

    出于安全原因,故意不允许使用 access_token URL 参数进行授权。基本上,如果用户要在浏览器上打开恶意文件(例如,包含一些 Javascript 的 html 就足够了),文件中的恶意代码可能会窃取 URL 中的访问令牌并将其发送给第三方坏人。

    要访问该文件,您需要使用“授权”HTTP 标头进行授权。只需在请求中添加一个 HTTP 标头,如下所示:

    Authorization: Bearer access_token_here
    

    【讨论】:

    • 安全问题是个好点。不幸的是,我不能在不重写操作系统的情况下使用标题;-) 或者,我可以在显示文件之前下载文件,例如在电影的情况下远非理想...谢谢!
    • 我们知道这是很多开发者的痛点。特别是因为代理文件服务器端并不总是一个现实的选择(例如您的电影示例)。我们正在研究其他一些授权方式,例如使用 Google 安全登录 cookie(因此,如果用户已登录,他将无需使用 OAuth 2.0 即可访问该文件)。但目前没有任何承诺。这将取决于优先级以及安全问题。
    猜你喜欢
    • 1970-01-01
    • 2011-03-18
    • 2022-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多