flask _QQ第三方登录

flask _QQ第三方登录

采用js sdk,详情可参考腾讯开发平台





    



    
     
     






后台路由应该与回调地址的路由一致

# 后台视图获取ajax传递的参数值,进行数据库的操作
data = request.form.get('nickName')
openId = request.form.get('openId')
avatar = request.form.get('avatar')
# return 渲染回调函数所在的界面html
return render_template('xxxx.html')

# 返回登录成功的标识
return json.dumps({"dealFlag ": "1"})
# 前端ajax根据接收的json数据进行跳转
 if (result.dealFlag = '1') {
    alert("欢迎登陆" + s.data.nickname);
    // 登录成功后跳转到验证通过后的界面
    window.location.href = "{{ url_for('cms.myindex') }}";
  } else {
    alert("登陆失败");
    window.location.href = "{{ url_for('cms.login') }}"
            }

前端界面的渲染

1. 可以根据获取的参数值直接传递到对应的前端页面进行渲染
2. 使用flask-login将用户信息注册到session中,在页面中直接根据{{ current_user.数据库字段名 }

后台处理

# 路由设置为回调地址路由
@cms_bp.route('/afterlogin.do', methods=['POST', 'GET'])
def login():
    form = LoginForm(request.form)
    if request.method == "POST":
        # 接收前端传递回来的数据
        data = request.form.get('nickName')
        openId = request.form.get('openId')
        avatar = request.form.get('avatar')
        if data:
            user = db.session.query(User).filter(User.username == data).first()
            if not user:
                user = User()
                user.username = data
                user.password = openId
                user.status = avatar
                db.session.add(user)
                db.session.commit()
            user = db.session.query(User).filter(User.username == data).first()
            # 将用户注册到flask_login中,可以直接使用current_user将数据渲染到前端页面
            login_user(user)
            if user:
                # 返回json数据,前端接收后进行跳转判断
                return json.dumps({"dealFlag ": "1"})

你可能感兴趣的:(flask _QQ第三方登录)