Mi comprensión de la diferencia entre oauth_aware
y oauth_required
es que aware
no fuerza la autorización, mientras que required
hace, pero eso no es lo que estoy viendo en la práctica. Tengo los dos RequestHandlers de webapp a continuación, uno de cuyos get()
método está decorado con decorator.oauth_aware
y el otro con decorator.oauth_required
. Sin embargo, cuando ejecuto localmente o en App Engine, ambos redireccionan inmediatamente al flujo de inicio de sesión.fuerzas OAuth2Decorator oauth_aware autenticación
El objetivo es que SplashHandler
le proporcione al usuario un enlace para autorizar si aún no lo está y, si lo está, reenviarlo al /tasks/
.
decorator = OAuth2Decorator(
client_id=settings.CLIENT_ID,
client_secret=settings.CLIENT_SECRET,
scope=settings.SCOPE,
user_agent='mytasks')
class SplashHandler(webapp.RequestHandler):
@decorator.oauth_aware
def get(self):
if not decorator.has_credentials():
self.response.out.write(template.render('templates/convert.html',
{'authorize_url': decorator.authorize_url()}))
else:
self.redirect('/tasks/')
class TasksHandler(webapp.RequestHandler):
@decorator.oauth_required
def get(self):
tasks = get_tasks()
tasks.sort(key=lambda x: x['due'])
self.response.out.write(template.render('templates/index.html',
{'tasks': tasks}))
application = webapp.WSGIApplication(
[('/', SplashHandler), ('/tasks/', TasksHandler)], debug=True)
Gracias por esto, tiene mucho sentido. Estoy de acuerdo en que mi caso de uso es probablemente más común, pero estoy predispuesto (: echaré un vistazo a la fuente de 'oauth_aware' y escribiré la mía. ¡Gracias de nuevo! –