def oauth2callback():
flow = oauth2client.client.flow_from_clientsecrets(
'client_secrets_oauth.json',
scope=[
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/userinfo.profile'],
redirect_uri=flask.url_for('oauth2callback', _external=True))
if 'code' not in flask.request.args:
auth_uri = flow.step1_get_authorize_url()
return flask.redirect(auth_uri)
else:
auth_code = flask.request.args.get('code')
credentials = flow.step2_exchange(auth_code)
flask.session['credentials'] = credentials.to_json()
# use token to get user profile from google oauth api
http_auth = credentials.authorize(httplib2.Http())
userinfo_client = apiclient.discovery.build('oauth2', 'v2', http_auth)
user = userinfo_client.userinfo().v2().me().get().execute()
# TODO only allow columbia.edu emails
# if 'columbia.edu' not in user['email']:
# return flask.redirect(flask.url_for('bademail'))
um = users_model.Users()
flask.session['google_user'] = user
flask.session['id'] = um.get_or_create_user(user)
# now add is_student and is_teacher to flask.session
im = index_model.Index(flask.session['id'])
flask.session['is_student'] = True if im.is_student() else False
flask.session['is_teacher'] = True if im.is_teacher() else False
redirect = flask.session['redirect']
flask.session.pop('redirect', None)
return flask.redirect(redirect)
评论列表
文章目录