def login_by_qiniu_callback(): """Qiniu OAuth 回调 """ code, info = OAuthSignIn.get_provider('qiniu').callback() if code is None: raise OAuthFail() user = User.query.filter_by(qiniu_id = info.get('uid')).first() if user is None: user = User( qiniu_id = info.get('uid'), name = info.get('full_name'), nickname = info.get('full_name'), gender = info.get('gender') ) db.session.add(user) # update qiniu info user.qiniu_name = info.get('full_name') user.qiniu_email = info.get('email') # update oauth_code user.oauth_code = code db.session.commit() # 如果是admin来请求oauth if request.referrer == url_for('admin.admin_login', _external = True): if user.qiniu_email in current_app.config['TECHSHOW_ADMINs']: login_user(user) return redirect(url_for('admin.admin_index')) return render_template('oauth_pending.html', oauth_logo = '/static/images/qiniu_logo.png')