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()は、OAuth 2.0 ダンス中にサーバーからのリダイレクトを処理する webapp.RequestHandler を返します。

From : oath2client.appengine の callback_handler docstring

したがって、解決策は次のとおりです。

use_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 に答える