def login_xenforo(user=None):
if user: return redirect('/')
code = request.query['code']
data = {'grant_type': 'authorization_code',
'code': code,
'client_id': config['XF_CLIENT_ID'],
'client_secret': config['XF_SECRET_KEY'],
'redirect_uri': '%s/login/xenforo' % config['SITE_URL']}
res = requests.post('%s/api/index.php?oauth/token' % config['XF_URL'], data = data)
res_data = res.json()
res.raise_for_status()
pprint(res_data)
user = {
'identity': res_data['user_id'],
'identity_type': 'xenforo',
'access_token': res_data['access_token'],
'refresh_token': res_data['refresh_token'],
'user_id': res_data['user_id'],
'authlink': str(uuid.uuid4()), # this is still used to unsubscribe from emails
'subscribed': True,
}
# get extended information
res = requests.get('%s/api/?users/%s&oauth_token=%s' % (config['XF_URL'], res_data['user_id'], user['access_token']))
xf_user = res.json()['user']
user['xf_username'] = xf_user['username']
user['email'] = xf_user['user_email']
r.table('users').get(user['identity']).replace(user).run(conn())
return users.login(user)
评论列表
文章目录