【发布时间】:2014-01-18 09:51:38
【问题描述】:
我想让这个场景发生在 AppEngine 应用程序中:
当用户请求 MyPageHandler 时,他将被自动重定向到登录页面(如果他没有登录)。然后,如果用户在我们的记录中不存在,我们会要求他给我们一些凭据(更准确地说是由 https://www.googleapis.com/auth/plus.login 指定的那些)。我们存储授权令牌以供将来使用。 用户下次连接时,直接登录。
为此我写了这段代码:
decorator = appengine.OAuth2DecoratorFromClientSecrets(
'my_client_secret.json',
scope = 'https://www.googleapis.com/auth/plus.login')
@decorator.oauth_aware
def custom_login_required(handler_method):
def check_login(self, *args, **kwargs):
user = users.get_current_user()
if not user:
return self.redirect(users.create_login_url(self.request.url))
else:
usrs = UsersModel.query(UsersModel.email == users.get_current_user().email()).fetch()
if len(usrs) == 0:
user = UsersModel(email = users.get_current_user().email())
http = decorator.Http()
myService = build('plus', 'v1', developerKey=api_key, http = http)
people_resource = service.people()
people_document = people_resource.get(userId='me').execute()
user.gplus_profile = people_document['url']
user.put()
handler_method(self, *args, **kwargs)
else:
#get the link and avatar
handler_method(self, *args, **kwargs)
return check_login
class MyPage(webapp2.RequestHandler):
@custom_login_required
def get(self):
.
.
#Some Work
.
.
class OAuth2CallbackRequestHandler(decorator.callback_handler()):
def get(self):
#I do not know how to make use of this
pass
谢谢。
【问题讨论】:
标签: google-app-engine google-oauth webapp2