1.设置个图标点击请求后台,后台通过相应参数生成URL返回给前台,前台在指定div打开url,用户在QQ页面登录完成后会回调到刚刚返回的URL里面的redirect_uri 中,设置个定时器1秒钟去扫一次返回的信息,扫到相应的数据进行相应的处理
登录页面
<div class="dsflogin_1"><a class="icon-qq" href="#" @click.stop.prevent="login_qq" title="QQ登录"></a></div>
//定义参数
App._$declare({
ewmDiv_qq : false,
qq_url : '',
setinterval_qq : null
});
方法
//qq登录
login_qq : function(){
var _this = this;
if(_this.setinterval_qq != null){//有定时器先关闭
clearInterval(_this.setinterval_qq);
}
App._$get('${ctxPath}/api/qq-login.json?_type=requestQQ&_batch=true',null,null,null,null,
function(data){
_this.ewmDiv_qq = true;
_this.qq_url = data.url;//回传url
//监听返回参数
_this.setinterval_qq = setInterval(function(){
if(_this.ewmDiv_qq == false){//关闭二维码窗口
clearInterval(setinterval_qq)
}
var qqStatus = $("#qqStatus",$('#ewmDiv_qq iframe')[0].contentDocument).val();//$('#ewmDiv_qq iframe')[0].contentDocument 在哪里获得
if(qqStatus != null){
clearInterval(_this.setinterval_qq)
if(qqStatus == 200){//成功登录
var login_jwt = $("#login_jwt",$('#ewmDiv_qq iframe')[0].contentDocument).val();
var login_t = $("#login_t",$('#ewmDiv_qq iframe')[0].contentDocument).val();
window.localStorage['_authorization'] = login_jwt;
window.localStorage['_t'] = login_t;
setTimeout(function(){
//登录成功,跳转到指定页面
window.location.href = '${ctxPath}/member/';
},100)
}else if(qqStatus == 201){//未注册
_this.ewmDiv_qq = fal