在使用GAE /装饰导游告诉我说, “你需要一个特定的URL处理程序添加到您的应用程序以处理来自授权服务器返回到你的应用程序重定向” :
def main(): application = webapp.WSGIApplication( [ ('/', MainHandler), ('/about', AboutHandler), (decorator.callback_path, decorator.callback_handler()), ], debug=True) run_wsgi_app(application)
目前,我无法正确设置此设置。结果,我看到并看到了HTTP 302回调响应(它应该被处理程序捕获),而不是我期望的响应。我有两个问题要解决:
oauth2client/appengine.py
callback_path
callback_handler()
('/oauth2callback', OAuth2Handler)
(decorator.callback_path, decorator.callback_handler())
myapp.yaml
-网址:/ oauth2callback
脚本:oauth2client / appengine.py
谢谢你的帮助!这是我当前的代码:
myapp.py
class UpdatePage(webapp2.RequestHandler): def get(self): playlist_id = self.youtube_create_playlist() ... @decorator.oauth_required def youtube_create_playlist(self): http = decorator.http() request = youtube.playlists().insert(...) response = request.execute(http=http) return response["id"] ... update = webapp2.WSGIApplication([ ('/update', UpdatePage), ('/oauth2callback', OAuth2Handler) ], debug=True)
app.yaml
application: myapp version: 1 runtime: python27 api_version: 1 threadsafe: false handlers: - url: / static_files: index.html upload: index.html - url: /oauth2callback script: oauth2client/appengine.py - url: /update script: myapp.update
该库不在App Engine中提供。
您应使用的版本google-api-python- client-1.1位于项目下载页面上。
google-api-python- client-1.1
我相信您所指的版本是google-api-python-client App Engine SDK中包含的(有些旧)版本。仅包含用于执行简单OAuth 2.0的功能,appcfg.py并且是执行此简单任务的稳定版本。虽然它是在SDK,它是 不是 在运行,而不是赞同当前版本的google- api-python-client这些原因。
google-api-python-client
appcfg.py
google- api-python-client
我还要指出,您链接的文章明确指向安装说明。
更新:如此处 所述,您的WSGI处理程序应包含装饰器的回调
routes = [ ('/update', UpdatePage), (decorator.callback_path, decorator.callback_handler()), ] update = webapp2.WSGIApplication(routes, debug=True)
并且您app.yaml应该允许您的主处理程序应该显式匹配其中的路由decorator.callback_path
decorator.callback_path
- url: /oauth2callback script: myapp.update
或者应该将所有剩余的请求路由到您的WSGI处理程序
- url: /.* script: myapp.update
(第二种方法可能需要向WSGI处理程序中添加404捕获所有功能。)