1

这很好用:

secrets = 'client_secrets-gae.json'
decorator = OAuth2DecoratorFromClientSecrets(os.path.join(os.path.dirname(__file__), secrets),
                                          scope='https://www.googleapis.com/auth/drive')
....

webapp2.Route('/oauth2callback', handler=decorator.callback_handler() ),

但是我怎样才能使用 webapp2延迟加载回调。我必须参考装饰器实例:

webapp2.Route(r'/products', handler='handlers.ProductsHandler', name='products-list', handler_method='list_products')

更新并解决

此行decorator.callback_handler()创建一个请求处理程序对象。

decorator_callback_handler =  decorator.callback_handler()

.... 

webapp2.Route('/oauth2callback', handler='my_package.my_mod.decorator_callback_handler'),

当然,我使用不同的模块来处理装饰器和 webapp2 路由,以从延迟加载中受益。

4

1 回答 1

1

此行decorator.callback_handler()返回一个 webapp.RequestHandler,它在 OAuth 2.0 跳舞期间处理从服务器返回的重定向。

来自:oath2client.appengine 中的 callback_handler 文档字符串

所以解决方案是:

使用_api.py:

secrets = 'client_secrets-gae.json'
decorator = OAuth2DecoratorFromClientSecrets(os.path.join(os.path.dirname(__file__), secrets),
                                      scope='https://www.googleapis.com/auth/drive')

decorator_callback_handler =  decorator.callback_handler()

并在 main.py 中延迟加载此处理程序:

app = webapp2.WSGIApplication([        
        ....                            # other routes                                             
        webapp2.Route('/oauth2callback', handler='package.use_api.decorator_callback_handler'),                      
    ], debug=True)
于 2013-02-14T17:28:26.463 回答