def confirm_login():
log.info("Checking login....")
# Check for state and for 0 errors
state = session.get('oauth2_state')
if not state or request.values.get('error'):
return redirect(url_for('index'))
# Fetch token
discord = utils.make_session(state=state)
discord_token = discord.fetch_token(
data_info.TOKEN_URL,
client_secret=data_info.OAUTH2_CLIENT_SECRET,
authorization_response=request.url)
if not discord_token:
log.info("Not clear, returning")
return redirect(url_for('index'))
# Fetch the user
user = utils.get_user(discord_token)
# Generate api_key from user_id
serializer = JSONWebSignatureSerializer(app.config['SECRET_KEY'])
api_key = str(serializer.dumps({'user_id': user['id']}))
# Store api_key
db.set('user:{}:api_key'.format(user['id']), api_key)
# Store token
db.set('user:{}:discord_token'.format(user['id']), json.dumps(discord_token))
# Store api_token in client session
api_token = {
'api_key': api_key,
'user_id': user['id']
}
session.permanent = True
session['api_token'] = api_token
log.info("Clear, redirect...")
return redirect(url_for('after_login'))
评论列表
文章目录