【问题标题】:Google App Engine: using Javascript Client Library for OAuth2 authorisationGoogle App Engine:使用 Javascript 客户端库进行 OAuth2 授权
【发布时间】:2013-02-19 11:25:12
【问题描述】:

我正在尝试用 Python 开发我的第一个 Google App Engine 应用程序,作为其中的一部分,我希望用户能够将视频上传到 Youtube 并与该应用程序的其他用户分享。根据推荐的协议,上传到他们自己的 Youtube 帐户,应用程序需要捕获的唯一信息是视频 ID。

我真的希望该设施从应用程序内上传,而不是将用户重定向到 Youtube 主站点进行上传,这样用户在任何时候都不需要离开应用程序,以保持无缝连接。我原以为这会相对简单,因为它似乎是许多网站和应用程序都希望提供的功能,但似乎并非如此。

我真的很难理解我需要在这里通过什么 OAuth2 流程,以前从未与他们角力过。 Youtube API 文档中唯一的上传示例代码是从您自己的机器上传(通过命令行),因此这里不相关。我已经向后阅读了文档,听起来基于浏览器的上传工具并没有针对 Youtube Data Api v3 进行更新,所以我需要做的第一件事就是在使用之前从用户那里获取访​​问令牌v2 基于浏览器的上传协议。鉴于用户将通过他们的浏览器上传本地存储的文件(即在他们的机器上),我假设客户端 JavaScript OAuth2 流是我需要的,而不是 Python 服务器端流。还是我都需要?

问题是我什至无法让人们离开我使用 JavaScript 客户端库从应用程序提供的 html 页面,以便让他们进入授权页面。为了检查我是否了解通过 JavaScript 客户端库获取访问令牌的步骤,我首先尝试将 Google 示例代码从此处剪切并粘贴到 html 页面中:

Google Api Javascript Client Library sample

并将 Api 密钥和客户端 ID 更改为我自己的,更新了控制台上 API 访问窗格上的 JavaScript 来源并授权了 Google+,但单击该按钮什么也没做。

所以大概我在这里误解了一些非常基本的东西!

有什么想法吗? JS 流是否被 Python 应用程序中的流控制覆盖?问题是我实际上应该使用服务器端流程,在这种情况下,我如何让用户从他们自己的浏览器上传,然后在上传后捕获视频 ID?

我不敢相信我是第一个尝试这个的人,如果有人已经解决了这个问题或有任何想法,我将非常感谢任何指点。谢谢。

【问题讨论】:

标签: google-app-engine file-upload youtube-api oauth-2.0


【解决方案1】:

这是一种选择,如果您可以在 JavaScript 中完全在客户端处理事情,并且您也可以限制自己使用支持 CORS 的浏览器:http://apiblog.youtube.com/2012/05/unlocking-javascripts-potential-with.html 如果您愿意,我可能会这样做可以接受这些限制,并且您正在做的唯一 YouTube API 集成是用于上传。

另一种选择,可能更适合 Python App Engine 应用程序,是使用 server-side web application flow。这里的问题是您需要结合使用Google APIs for Python client library 为您处理OAuth 2,并使用较旧的GData API Python client library 来处理基于浏览器的上传流程。绝对可以将两者混合使用,我们有一篇博文讨论了一个开源 Python App Engine 应用程序,它可以做到这一点:http://apiblog.youtube.com/2012/08/party-playlist-picker-experimental.html

正如您所指出的,目前 v3 中没有基于浏览器的上传流程。

【讨论】:

  • 这真的很有帮助和响应,谢谢!我真的很受鼓舞,有一条前进的道路,我现在将研究这两种选择。
  • CORS 流程运行良好,对用户来说非常无缝,非常感谢您指出它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-25
  • 2017-05-16
  • 1970-01-01
  • 2013-10-21
  • 1970-01-01
相关资源
最近更新 更多