def login(request):
session = await get_session(request)
client = GoogleClient(
client_id=os.getenv('OAUTH_CLIENT_ID'),
client_secret=os.getenv('OAUTH_CLIENT_SECRET'),
scope='email profile',
)
# FIXME not picking up https
client.params['redirect_uri'] = '{}://{}{}'.format(request.scheme, request.host, request.path)
if client.shared_key not in request.GET: # 'code' not in request.GET
return web.HTTPFound(client.get_authorize_url())
access_token, __ = await client.get_access_token(request.GET)
user, info = await client.user_info()
# TODO store in session storage
if user.email in args.admins:
session['is_authed'] = True
session['user'] = {
'name': info['displayName'],
'email': user.email,
'avatar': user.picture,
}
else:
return web.HTTPForbidden()
return web.HTTPFound('/')
评论列表
文章目录