这篇文章是如何在GAE cron工作中执行OAuth要求操作的后续内容?,我意识到我错误地使用了@oauth_required装饰器OAuth2DecoratorFromClientSecrets.
正如OAuth 2.0解释的演示文稿所述,Oauth 2.0解决了以下问题:
这就是@oauth_required摘要,它做得很好(目前我的应用程序"有效":如果我触发刷新页面,我会被要求授权访问我的YouTube数据到我的应用程序,其余部分如下).但那不是我想要的!我的应用程序做了一些更简单的事情,即每天使用我的凭据创建一个youtube播放列表,无需任何用户输入.因此,为了与上述3层联想进行比较,我希望:
但我仍然需要帮助才能做到这一点; 这是我目前的状态:
经过几次搜索后,我了解到我想要做的就是称为离线访问(强调我的,这几乎就是我的用例):
"在某些情况下,当用户不在时,您的应用程序可能需要访问Google API.这方面的例子包括备份服务和应用程序,这些应用程序在周一早上8点正好发布博客帖子.这种访问方式称为脱机,Web服务器应用程序可以请求用户进行脱机访问.正常和默认的访问方式称为在线. " ...
→所以我应该继续做我现在正在做的事情,继续请求访问我的YouTube帐户,但是使用type_access=offline标志来获取令牌,并持续/使用它来进行后续请求.
该脱机访问和 使用刷新令牌部分使总感觉,但停留在一般的HTTP水平.作为一个新手,我不知道如何将这些原则集成到我的Python代码中,我没有找到任何示例Python代码....
→任何人都可以帮我一个Python示例说明如何以及在何处使用这面旗帜?
...特别是在学习之后oauth2client.appengine.OAuth2Decorator.oauth_required,我仍然不确定我是否可以将它弯曲到我的情况,或者我是否应该做自己的事情.
→你怎么看?
谢谢你的时间; 如果需要我也会在irc://irc.freenode.net/#appengine上闲逛ronj.
python google-app-engine google-api oauth-2.0 google-api-python-client
我有一个简单的Google App Engine应用程序,其中包含一个/update更新YouTube播放列表的页面.它看起来像这样:
class UpdatePage(webapp2.RequestHandler):
@decorator.oauth_required
def get(self):
update_result = self.update_playlist()
...
routes = [('/update', UpdatePage),
(decorator.callback_path, decorator.callback_handler())]
app = webapp2.WSGIApplication(routes, debug=True)
Run Code Online (Sandbox Code Playgroud)
它按预期update_playlist()工作,该方法完成其工作,但事实证明,在某些情况下,它可以运行很长一段时间,导致一个DeadlineExceededError.所以在阅读了可用的选项之后,我认为Task Queue API是要走的路(对吗?),我正在尝试使用它,遵循Python中的使用推送队列指南.
→简而言之,我分成UpdatePage了UpdatePageHandler+ UpdatePageWorker:
class UpdateHandlerPage(webapp2.RequestHandler):
@decorator.oauth_required
def get(self):
taskqueue.add(url='/updateworker')
class UpdateWorkerPage(webapp2.RequestHandler):
def post(self):
update_result = self.update_playlist()
...
routes = [('/update', UpdateHandlerPage),
('/updateworker', UpdateWorkerPage),
(decorator.callback_path, decorator.callback_handler())]
app = webapp2.WSGIApplication(routes, debug=True)
Run Code Online (Sandbox Code Playgroud)
不幸的是,在进行拆分后,我的OAuth2装饰器似乎不再起作用了:
INFO 2013-05-30 17:08:53,971 discovery.py:709] URL being requested: https://www.googleapis.com/youtube/v3/playlists?alt=json&part=snippet%2Cstatus
WARNING 2013-05-30 …Run Code Online (Sandbox Code Playgroud) python google-app-engine google-api task-queue google-api-python-client