电脑端 第三方平台无刷新登录方案

第三方平台(如QQ登录、微信登录)登录自己的网站的时候,会先跳转到平台的网站,登录成功后就会进行307跳转会我们的网站,这个过程会有很不友好的体验,尝试过iframe打开第三方平台页面,但是登录成功后还是会被强制调整到平台的网站。也尝试过 用爬虫的方式把二维码取出来 放到自己的网站上,然后轮询服务器判断是否登录成功,但这种方法存在很大的不确定性,短期内问题不大。

最新的方案就是 用js打开新的 浏览器窗口,轮询登录成功后就关闭这个新窗口,js代码如下:

    var Other = {
        url:null,
        w_obj:null,
        interval:null,
        login: function(type)
        {
            this.url = window.host_url+"passport/login.index/platform?authtype="+type;
            console.log(this.url)
            // 居中打开 500*500 的新窗口 用于第三方登录
            var w_obj = window.open(this.url, "_blank", "scrollbars=yes,resizable=1,modal=false,alwaysRaised=yes,height=500,width=500,top="+(window.screen.availHeight/2-250)+",left="+(window.screen.availWidth/2-250));

            // 定时回调
            var interval = setInterval(is_login, 2000)

            // 判断是否登录
            function is_login()
            {
                if (w_obj != null && w_obj.closed){
                    // 我的窗口被关闭!
                    interval = window.clearInterval(interval)
                    // alert("登录失败,请重新登录");
                } else{
                    // 我的窗口没有被关闭!
                    var result;
                    Ajax.get(window.host_url + window.api_path +"common",
                    {
                        type: 'token',
                    },
                    function(data){
                        result = JSON.parse(data);
                        console.log(result)
                        if (result.code == 200 && result.content != null) {
                            // 登录成功后关闭定时和窗口
                            w_obj.close();
                            interval = window.clearInterval(interval)
                            window.logined_func(result, login_type)
                        }
                    });
                    
                }
            }
        },
    }

 

你可能感兴趣的:(架构,js)