瀏覽代碼

新增h5第三方登录

fyw 2 年之前
父節點
當前提交
29971207bc

文件差異過大導致無法顯示
+ 0 - 0
build/common/dwUDBProxy/css/login_fc67da9.css


文件差異過大導致無法顯示
+ 0 - 0
build/common/js/dwudbproxy-2022.js


文件差異過大導致無法顯示
+ 0 - 0
build/common/js/dwudbproxy-new.js


文件差異過大導致無法顯示
+ 0 - 0
build/common/js/dwudbproxy-wan.js


文件差異過大導致無法顯示
+ 0 - 0
build/common/js/dwudbproxy.js


+ 40 - 0
旧公共资源/src/dwUDBProxy/css/login.css

@@ -26,6 +26,46 @@
     font-family: Microsoft Yahei;
 }
 
+.dw-account-h5-login {
+    position: fixed;
+    top: 50%;
+    left: 50%;
+    z-index: 20001;
+    display: none;
+    margin: -146px 0 0 -228px;
+    width: 455px;
+    border-radius: 3px;
+    background: #fff;
+    font-family: Microsoft Yahei;
+}
+
+.dw-account-h5-login .tt h3{
+    color: #666666;
+    font-size: 18px;
+    display: flex;
+    align-items: center;
+}
+
+.dw-account-h5-login .tt h3::before,.dw-account-h5-login .tt h3::after{
+    display: inline-block;
+    content: '';
+    width: 60px;
+    height: 1px;
+    background-color: #DDDDDD;
+}
+
+.dw-account-h5-login .tt span{
+    margin-left: 10px;
+    margin-right: 10px;
+}
+
+.dw-account-h5-login .dw-login-inner{
+    width: auto !important;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+}
+
 .dw-account-login-pop .close {
     position: absolute;
     top: 0px;

+ 47 - 0
旧公共资源/src/dwUDBProxy/tpl/wan_h5_login.tmpl

@@ -0,0 +1,47 @@
+<% var typeText = (type=='register'?'注册':'登录'); %>
+<div class="dw-account-h5-login <%= wap && 'wap' %>">
+    <div class="dw-login-wrap">
+        <div class="dw-login-inner">
+            <div class="tt">
+                <h3><span>第三方登录</span></h3>
+            </div>
+            <ul>
+                <% if(!dropYYLogin){ %>
+                <li>
+                    <div class="login-btn-yy" title="YY<%= typeText %>"></div>
+                    <p>YY<%= typeText %></p>
+                </li>
+                <% } %>
+                
+                <li style="margin-right:40px;">
+                    <div class="login-btn-qq" title="QQ<%= typeText %>"></div>
+                    <p>QQ<%= typeText %></p>
+                </li>
+                <li>
+                    <div class="login-btn-wechat" title="微信<%= typeText %>"></div>
+                    <p>微信<%= typeText %></p>
+                </li>
+            </ul>
+            <!-- <a href="http://yxdt.duowan.com/1912/440606841331.html" style="text-align:center;display: block;" target="_blank">关于多玩游戏YY帐号体系调整公告</a> -->
+            <% if(!wap&&!dropSinaLogin){ %>
+                <p class="dw-account-other-login">
+                    <% if(type =='login'){ %>
+                    <button type="button" class="login-btn-old" title="旧版第三方登录">旧版第三方登录</button>
+                    <% } %>
+                    其它<%= typeText %>方式:<button type="button" class="login-btn-weibo" title="新浪微博<%= typeText %>">新浪微博</button>
+                </p>
+            <% } %>
+        </div>
+    </div>
+    <% if(wap&&!dropSinaLogin){ %>
+        <p class="dw-account-other-login">
+            <button type="button" class="login-btn-weibo">新浪微博</button>
+        </p>
+    <% } %>
+
+    <!-- <% if(dropYYLogin){ %>
+        <p class="dw-account-other-login">
+            <button type="button" class="login-btn-yy">YY登录</button>
+        </p>
+    <% } %> -->
+</div>

+ 1263 - 0
旧公共资源/src/js/dwudbproxy-2022.js

@@ -0,0 +1,1263 @@
+/**
+ * 修改于2019.10.31 
+ * 1、针对多玩游戏大厅的修改:多玩游戏大厅YY游戏未绑定微信或者qq账号时,允许弹出绑定弹窗
+ **/
+
+ (function (window, $) {
+    
+    //小程序不执行
+    if(/(\?|\&)platform=wxminiprogram(&*|$)/.test(location.href)) return
+
+    if (window.dwUDBProxy) return
+
+    __inline('/src/modules/cookie/cookie.js')
+
+    var plainFunction = function () { }
+
+    //多玩客户端不支持window.open,在这里做统一兼容处理
+    var dwClientIncompatible = {
+        isClient: function() {
+            return !!(window.external && window.external.OpenThirdLogin)
+        },
+        open: function(url,target) {
+            if(dwClientIncompatible.isClient()){
+                window.external.OpenThirdLogin(url)
+            } else {    
+              return window.open(url,target)
+            }
+        },
+        focus: function(context) {
+            if(!dwClientIncompatible.isClient()){
+                context && context.focus()
+            }
+        },
+        close: function(context) {
+            if(dwClientIncompatible.isClient()){
+                window.external.CloseThirdLogin()
+            } else {
+                context && context.close()
+            }
+        }
+    }
+
+    var Config = {
+        multilogin: {
+            domainMap: [
+                // 'video.duowan.com',
+                'ouj.com',
+                // 'duowan.com'
+                // 'duowan.cn'
+            ],
+            domainExcludeMap: [
+                // 'udbproxy.duowan.com',
+                'ka.duowan.com',
+                'kaplus.duowan.com',
+                // 'bbs.duowan.com'
+            ],
+            urlMap: [
+                // 'http://www.duowan.com/s/test_login.html'
+            ]
+        },
+        showTips:{
+            domainExcludeMap: [
+                'wan.ouj.com'
+            ]
+        }
+    }
+
+
+    var Util = {
+        loginCallbacks: $.Callbacks('memory'),
+        loginSuccCallbacks: $.Callbacks('memory'),//登录成功后的回调队列
+        bindCallbacks: $.Callbacks('memory'),
+        bindSuccCallbacks: $.Callbacks('memory'),//绑定成功后的回调队列
+        logoutCallbacks: $.Callbacks('memory'),
+        logoutSuccCallbacks: $.Callbacks('memory'),//注销成功后的回调队列
+        intervalHandle: 0,
+
+        getCookie: Cookie.get,
+
+        setCookie: Cookie.set,
+
+        removeCookie: Cookie.remove,
+        //新增默认登录成功事件
+        setDefaultSuccCb: function () {
+            //1.登录成功后,校验论坛信息
+            // this.loginSuccCallbacks.add(function (user) {
+            //     if(Util.allowShowTips() === false) return 
+
+            //     $.ajax({
+            //         url: Util.toDecorateURL('//bbs.duowan.com/api/uinfo4dw.php?op=isregister'),
+            //         dataType: 'jsonp',
+            //         success: function (ret) {
+            //             if (ret.code == 1) {
+            //                 if (__ThirdLogin.loginMaskObj) {
+            //                     __ThirdLogin.loginMaskObj.show()
+            //                     __ThirdLogin.setNickName.show()
+            //                 } else {
+            //                     __ThirdLogin.initLoginTip()
+            //                     if (Util.isWap) {
+            //                         __ThirdLogin.setNickName.css({
+            //                             position: 'absolute',
+            //                             top: $(window).scrollTop() + $(window).height() / 2
+            //                         })
+            //                     }
+            //                     __ThirdLogin.loginMaskObj.show()
+            //                     __ThirdLogin.setNickName.show()
+            //                 }
+            //                 __ThirdLogin.setNickName.data('sign', ret.data)
+            //                 setTimeout(function () {
+            //                     __ThirdLogin.setNickName.find('input').eq(0).val(ret.msg)
+            //                 }, 0);
+            //             }
+            //         }
+            //     })
+            // })
+
+            return this
+        },
+
+        isLogin: function () {
+            return Util.getCookie('lg_uid') || Util.getCookie('yyuid')
+        },
+        isBind: function () {
+            return Util.getCookie('lg_bind') == 1
+        },
+        isKaLogin: function (callback) {
+            if (Util.getCookie('user_id')) {
+                callback && callback(true)
+            } else {
+                $.ajax({
+                    url: Util.toDecorateURL('//ka.duowan.com/user/checkLogin?createIfNx=0'),
+                    dataType: 'jsonp',
+                    success: function (ret) {
+                        if (ret.code == 0 && ret.data) {
+                            callback && callback(true)
+                        } else {
+                            callback && callback(false)
+                        }
+                    }
+                })
+            }
+        },
+
+        getUsername: function () {
+            var username = Util.getCookie('username');
+            if (!username) return "";
+
+            var arr = username.split('_', 2);
+            if (!arr || !arr[0]) return username;
+
+            var nickname = Util.getCookie(arr[0] + '_nickname');
+            if (!nickname || 'null' == nickname) return username;
+
+            var prefix = "";
+            if ('newqq' == arr[0]) {
+                prefix = "[QQ网友]";
+            } else if ('qq' == arr[0]) {
+                prefix = "[微信网友]";
+            } else if ('sina' == arr[0]) {
+                prefix = "[微博网友]";
+            } else {
+                prefix = "[多玩网友]";
+            }
+            return prefix + nickname;
+
+        },
+
+        getUid: function () {
+            return Util.getCookie('lg_uid') || Util.getCookie('yyuid')
+        },
+        decorateURL: function (url) {
+            if (url) {
+                if (/^http/.test(url)) {
+                    return url;
+                }
+                var protocol = "http://";
+                if (/^https/.test(window.location.href)) {
+                    protocol = "https://"
+                }
+                return protocol + window.location.host + url
+            } else {
+                url = window.location.href;
+                var pos = url.indexOf("#");
+                if (pos != -1) {
+                    url = url.substring(0, pos)
+                }
+                return url;
+            }
+        },
+        toDecorateURL: function (url) {
+            if (/^http/.test(url)) {
+                return url;
+            } else {
+                var protocol = "http:";
+                if (/^https/.test(window.location.href)) {
+                    protocol = "https:"
+                }
+                return protocol + url
+            }
+        },
+        /**默认是登录检测 */
+        intervalCheckLogin: function (intervalTime, tryNum, isbind) {
+            this.intervalHandle && clearInterval(this.intervalHandle)
+
+            if (!intervalTime) intervalTime = 100;
+            if (!tryNum) tryNum = 3000;
+
+            var that = this;
+
+            var checkFn = function () {
+                return isbind ? that.isBind() : that.isLogin()
+            }
+
+            var SuccFn = (function () {
+                var fn
+                if (isbind) {
+                    fn = function () {
+                        that.bindCallbacks.fire()
+                        that.bindSuccCallbacks.fire()
+                        that.bindCallbacks = $.Callbacks('memory')
+                    }
+                } else {
+
+                    fn = function () {
+                        that.loginCallbacks.fire()
+                        that.loginSuccCallbacks.fire(Util.getUserInfo())
+                        that.loginCallbacks = $.Callbacks('memory')
+                    }
+                }
+
+                return fn
+            })()
+
+
+            if (checkFn()) {
+                SuccFn()
+            } else {
+                var i = 0;
+                that.intervalHandle = setInterval(function () {
+                    i++;
+                    if (checkFn()) {
+                        SuccFn()
+                        clearInterval(that.intervalHandle);
+                    }
+                    if (i > tryNum) {
+                        clearInterval(that.intervalHandle);
+                    }
+                }, intervalTime);
+            }
+        },
+
+        handleSuccessURL: function (successURL, closeLoginFunc, reloadPage) {
+            var successFunc = function () { };
+            var reloadPageFunc = function () { };
+            var checkLogin = false;
+
+            if ('function' == typeof successURL) {
+                successFunc = successURL;
+                successURL = Util.handleUrl();
+                checkLogin = true;
+            }
+            successURL = this.decorateURL(successURL);
+
+            if ('function' == typeof reloadPage) {
+                reloadPageFunc = function () {
+                    reloadPage(successURL);
+                    __ThirdLogin.showTip()
+                };
+                checkLogin = true;
+            } else {
+                reloadPageFunc = function () {
+                    __ThirdLogin.showTip()
+                }
+            }
+
+            if (checkLogin) {
+                this.loginCallbacks.empty();
+                this.loginCallbacks.add(closeLoginFunc);
+                this.loginCallbacks.add(reloadPageFunc);
+                this.loginCallbacks.add(successFunc);
+                this.intervalCheckLogin();
+            }
+            return successURL;
+        },
+        /**绑定处理 */
+        handle2SuccessURL: function (successURL, reloadPage) {
+            var successFunc = function () { };
+            var reloadPageFunc = function () { };
+            var checkBind = false;
+
+            if ('function' == typeof successURL) {
+                successFunc = successURL;
+                successURL = Util.handleUrl();
+                checkBind = true;
+            }
+            successURL = this.decorateURL(successURL);
+
+            if ('function' == typeof reloadPage) {
+                reloadPageFunc = function () {
+                    reloadPage(successURL);
+                };
+                checkBind = true;
+            }
+
+            if (checkBind) {
+                /**清除cookie*/
+                Util.removeCookie('lg_bind', {
+                    domain: '.ouj.com',
+                    path: '/'
+                })
+                this.bindCallbacks = $.Callbacks('memory')
+                this.bindCallbacks.add(successFunc);
+                this.bindCallbacks.add(reloadPageFunc);
+                this.intervalCheckLogin(null, null, 'bind');
+            }
+            return successURL;
+        },
+
+        handleUrl: function (param) {
+            var href = window.location.href
+
+            param = param || 'udbSuccessCallback'
+
+            if (/\?/.test(href)) {
+                href += ('&' + param)
+            } else {
+                href += ('?' + param)
+            }
+
+            return href
+        },
+
+        isMobile: function () {
+            return false;
+        },
+
+        useMultiLogin: function () {
+            //排除的域名
+            for (var i = 0, len = Config.multilogin.domainExcludeMap.length; i < len; i++) {
+                var domain = Config.multilogin.domainExcludeMap[i]
+                if (location.href.indexOf('ka.duowan.com/hd/') != -1) {
+                    return true
+                }
+
+                if ((-1 != location.hostname.indexOf(domain))) {
+                    return false;
+                }
+
+            }
+
+            //域名白名单
+            for (var i in Config.multilogin.domainMap) {
+                if (-1 != location.hostname.indexOf(Config.multilogin.domainMap[i])) {
+                    return true;
+                }
+            }
+
+            for (var i in Config.multilogin.urlMap) {
+                if (location.href == Config.multilogin.urlMap[i]) {
+                    return true;
+                }
+            }
+
+            return false;
+        },
+
+        allowShowTips:function(){
+            var domainExcludeMap = Config.showTips.domainExcludeMap
+
+            for(var i = 0; i < domainExcludeMap.length; i++){
+                var domainExclude = domainExcludeMap[i];
+                if(location.hostname.indexOf(domainExclude) >= 0 ) return false
+            }
+
+            return true
+        },
+
+        checkLogin: function () {
+            if (this.isLogin()) {
+                this.loginSuccCallbacks.fire(this.getUserInfo())
+            }
+            return this
+        },
+        getUserInfo: function () {
+            var user = {}
+
+            user.username = this.getUsername()
+            user.yyuid = Util.getUid()
+
+            return user
+        },
+        isWap: /Android|webOS|iPhone|Windows Phone|iPod|BlackBerry|SymbianOS/i.test(window.navigator.userAgent),
+        isBBS: /bbs./.test(location.host),
+        isWx: window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == "micromessenger",
+        isHezi:window.location.href.indexOf('hezi') > -1  
+    }
+
+    function UDBLogin(appid, baseURL) {
+        this.baseURL = baseURL || Util.toDecorateURL('//udbproxy.ouj.com/');
+        this.UDBCallbacks = $.Callbacks('memory');
+        this.setAppid(appid);
+        this.init();
+    }
+
+    UDBLogin.prototype = {
+        init: function () {
+            if (Util.isMobile()) {
+                this.loadUDBSdk('MWeb');
+            } else {
+                this.loadUDBSdk('PCWeb');
+            }
+        },
+        setAppid: function (appid) {
+            this.appid = appid || 1000;
+            this.getAuthorizeURL = this.baseURL + 'getAuthorizeURL?appid=' + this.appid;
+            this.callbackURL = this.baseURL + 'callback?appid=' + this.appid + '&successURL=';
+            this.denyCallbackURL = this.baseURL + 'denyCallback?appid=' + this.appid;
+            this.getDelCookieURL = this.baseURL + 'getDelCookieURL?appid=' + this.appid;
+        },
+        loadUDBSdk: function (type) {
+            var jsMap = {
+                'PCWeb': '/lgn/js/oauth/udbsdk/pcweb/udb.sdk.pcweb.popup.min.js',
+                'MWeb': '/lgn/js/oauth/udbsdk/mweb/udb.sdk.mweb.embed.min.js'
+            }
+            if (!jsMap[type]) {
+                type = 'PCWeb';
+            }
+
+            var that = this;
+            var isLoadUDB = function () {
+                if (window.UDB && window.UDB.sdk && window.UDB.sdk[type]) {
+                    that.UDBCallbacks.fire(window.UDB.sdk[type]);
+                }
+            };
+
+            if (!isLoadUDB()) {
+                $.ajax({
+                    type: "GET",
+                    url: Util.toDecorateURL("//res.udb.duowan.com/" + jsMap[type]),
+                    success: function () {
+                        return isLoadUDB();
+                    },
+                    dataType: "script",
+                    cache: true
+                });
+            }
+        },
+
+        login: function (successURL) {
+            var that = this;
+            successURL = Util.handleSuccessURL(successURL, function () {
+                that.UDBCallbacks.add(function (UDBSdk) {
+                    UDBSdk.popupCloseLgn && UDBSdk.popupCloseLgn();
+                });
+            });
+            that.UDBCallbacks.add(function (UDBSdk) {
+                UDBSdk.jsonpOpenLgn(that.getAuthorizeURL, that.callbackURL + encodeURIComponent(successURL), encodeURI(that.denyCallbackURL));
+            });
+        },
+
+        embedLogin: function (sel, successURL, UIStyle, closeLoginFunc) {
+            var that = this;
+            var eq = $(sel);
+            if (eq.length == 0) return;
+            eq.each(function () {
+                var thisObj = $(this);
+                if (("function" != typeof successURL) && !successURL) {
+                    successURL = thisObj.data("callback-url");
+                }
+                successURL = Util.handleSuccessURL(successURL, closeLoginFunc);
+                $.getJSON(that.getAuthorizeURL + '&jsonpcallback=?', {
+                    callbackURL: that.callbackURL + encodeURIComponent(successURL),
+                    denyCallbackURL: that.denyCallbackURL
+                },
+                    function (data) {
+                        if ("1" != data.success) {
+                            alert(data.errMsg);
+                            return;
+                        }
+                        thisObj.append($('<iframe frameborder="0" scrolling="no" allowtransparency="true"></iframe>').attr("src", data.url + "&rdm=" + Math.random() + "&UIStyle=" + UIStyle));
+                    });
+            });
+        },
+
+        logout: function (successURL) {
+            var that = this;
+            Util.logoutCallbacks.empty()
+
+            if ('function' == typeof successURL) {
+                Util.logoutCallbacks.add(successURL)
+            } else {
+                Util.logoutCallbacks.add(function(){
+                    window.location.href = successURL;
+                })
+            }
+            
+            $.getJSON(that.getDelCookieURL + '&jsonpcallback=?', function (data) {
+                if ("1" != data.success) {
+                    alert(data.errMsg);
+                    return;
+                }
+                if(dwClientIncompatible.isClient()){
+                    //多玩游戏大厅
+                    Util.removeCookie('dw_client_rewriteDomainCookie',{domain: '.ouj.com',path: '/'})
+                    Util.removeCookie('lg_uid', {domain: '.ouj.com',path: '/'})
+                    Util.removeCookie('yyuid', {domain: '.ouj.com',path: '/'})
+                    Util.removeCookie('ouid', {domain: '.ouj.com',path: '/'})
+
+                    window.external && window.external.Logout && window.external.Logout()
+                    Util.logoutCallbacks.fire()
+                    Util.logoutSuccCallbacks.fire()
+                    Util.logoutCallbacks = $.Callbacks('memory')
+                }else{
+                    that.UDBCallbacks.add(function (UDBSdk) {
+                        UDBSdk.deleteCrossmainCookieWithCallBack(
+                            data.delCookieURL,
+                            function () {
+                                Util.logoutCallbacks.fire()
+                                Util.logoutSuccCallbacks.fire()
+                                Util.logoutCallbacks = $.Callbacks('memory')
+                            });
+                    });
+                }
+            });
+
+            $.getJSON('//udbproxy.ouj.com/deleteoujCookie?callback=?');
+        },
+        kaLogout: function (successURL) {
+            $.ajax({
+                url: Util.toDecorateURL('//ka.duowan.com/user/logout'),
+                dataType: 'jsonp',
+                success: function (ret) {
+                    if (ret.code == 0) {
+                        location.reload()
+                    } else {
+                        alert(ret.msg)
+                    }
+                }
+            })
+        }
+    };
+
+    function ThirdLogin(appid, baseURL, loginStyle) {
+        this.baseURL = baseURL || Util.toDecorateURL('//udbproxy.ouj.com/thirdlogin');
+        this.loginStyle = loginStyle || 'duowan';
+        this.callbackURL = '';
+        this.denyCallbackURL = '';
+        this.minWindow = null;
+        this.loginPopupObj = null;
+        this.loginMaskObj = null;
+        this.yyLoginTip = null;
+        this.type = 'login' //login or register
+        this.setAppid(appid)
+        this.init();
+    }
+
+    ThirdLogin.prototype = {
+        init: function () {
+        },
+        setAppid: function (appid) {
+            this.appid = appid || 1000;
+        },
+        multiLogin: function (successURL) {
+            this.initMutilLoginPopup(successURL)
+            this.multiLoginPopupObj.show()
+            this.loginMaskObj.show();
+        },
+        h5MultiLogin: function (successURL) {
+            this.initMutilH5LoginPopup(successURL)
+            this.multiLoginPopupObj.show()
+        },
+        login: function (successURL) {
+            this.initDuowanLoginPopup(successURL)
+            this.loginPopupObj.show()
+            this.loginMaskObj.show()
+        },
+        register: function (successURL) {
+            this.initMutilLoginPopup(successURL, 'register')
+            this.multiLoginPopupObj.show()
+            this.loginMaskObj.show()
+        },
+        kaLogin: function (successURL) {
+            this.initKaLoginPopup(successURL);
+            this.loginPopupObj.show();
+            this.loginMaskObj.show();
+        },
+
+        bind: function (bindType, successURL) {
+            this.bindOauth(bindType, successURL)
+        },
+
+        unBind: function (options, callback) {
+            if (options.loginType && options.openid) {
+                $.ajax({
+                    url: this.baseURL + '/?do=unbind',
+                    data: options,
+                    dataType: 'jsonp'
+                }).done(function (ret) {
+                    callback && callback(ret)
+                })
+            }
+
+            return this
+        },
+
+        getUser: function (callback) {
+            $.ajax({
+                url: Util.toDecorateURL('//udbproxy.ouj.com/getInfo'),
+                dataType: 'jsonp'
+            }).done(function (ret) {
+                callback && callback(ret)
+            })
+        },
+
+        mobileLogin: function (successURL) {
+            this.loginOauth('yy', successURL);
+        },
+
+        loginOauth: function (loginType, successURL, multi) {
+            var that = this;
+            var authorize = multi ? 'dwAuthorizeURL' : 'dummy3AuthorizeURL'
+            successURL = Util.handleSuccessURL(successURL, function () {
+                that.closeLoginPopup();
+            }, function (successURL) {
+                that.reloadPage(successURL);
+            });
+
+            if ('yy' == loginType) {
+                var url = '//www.duowan.com/mlogin/?calbackUrl=' + encodeURIComponent(successURL);
+            } else {
+                if((/sid=\d+/g).test(successURL) ){
+                    successURL = successURL.replace(/sid=\d+/g,"")
+                }  
+                var url = this.baseURL + "?do=" + authorize + '&appid=' + this.appid + "&loginType=" + loginType + "&callbackUrl=" + encodeURIComponent(successURL);
+            }
+
+            this.minWindow = dwClientIncompatible.open(url, "_loginWin");
+            dwClientIncompatible.focus(this.minWindow);
+
+            // this.minWindow = window.open(url, "_loginWin");
+            // this.minWindow.focus();
+        },
+
+        bindOauth: function (bindType, successURL) {
+            var that = this;
+            var bindUrl = 'bindAuthorizeURL'
+            successURL = Util.handle2SuccessURL(successURL, function (successURL) {
+                that.reloadPage(successURL);
+            });
+
+            var url = this.baseURL + "?do=" + bindUrl + '&appid=' + this.appid + "&loginType=" + bindType + "&callbackUrl=" + encodeURIComponent(successURL);
+
+            this.minWindow = dwClientIncompatible.open(url, "_loginWin");
+            dwClientIncompatible.focus(this.minWindow);
+            
+            // this.minWindow = window.open(url, "_loginWin");
+            // this.minWindow.focus();
+        },
+
+        reloadPage: function (successURL) {
+            var that = this;
+            if (this.minWindow) {
+                dwClientIncompatible.close(this.minWindow)
+            }
+            // if (this.minWindow) {
+            //     this.minWindow.close()
+            // }
+            this.writeOtherDomainCookie(function () {
+                if (!successURL) {
+                    window.location.reload();
+                }
+                if (/udbSuccessCallback/.test(successURL)) {
+                    that.closeLoginPopup();
+                } else {
+                    window.location.href = successURL;
+                }
+            });
+        },
+
+        writeOtherDomainCookie: function (callback) {
+            var fields = ['udb_n', 'udb_l', 'udb_oar', 'yyuid', 'username', 'password', 'osinfo', 'oauthCookie',
+                'newqq_nickname', 'qq_nickname', 'sina_nickname', 'lg_uid', 'lg_openid', 'lg_type', 'lg_token'
+            ];
+            var params = {}, field = '', value = '';
+            for (var i = 0; i < fields.length; i++) {
+                field = fields[i];
+                value = Util.getCookie(field);
+                if (value != null) {
+                    params[field] = value;
+                }
+            }
+            if (-1 != location.hostname.indexOf('ouj')) {
+                $.ajax({
+                    url: Util.toDecorateURL('//udbproxy.ouj.com/writeOujCookie'),
+                    data: params,
+                    dataType: 'jsonp',
+                    complete: function () {
+                        callback()
+                    }
+                })
+            } else {
+                callback();
+            }
+        },
+        initLoginTip: function () {
+            if ($(".account-login-mask").length) return this;
+
+            var cssStyle = __inline("../dwUDBProxy/css/login.css");
+
+            var loginTipTpl = __inline("../dwUDBProxy/tpl/wan_tip.tmpl");
+
+            $("body").append('<style>' + cssStyle + '</style>')
+            $("body").append(loginTipTpl({
+                isWap: Util.isWap,
+                isBBS: Util.isBBS,
+                isHezi: Util.isHezi
+            }))
+            var that = this
+            this.loginMaskObj = $(".account-login-mask")
+            this.yyLoginTip = $('#yyLoginTip')
+            this.setNickName = $('#setNickNameTip')
+            this.setNickNameTip = $('.dw-account-input-tip')
+
+            this.loginMaskObj.on('click', function () {
+                that.closeLoginPopup()
+                if(Util.isHezi){
+                    window.open('login://close')
+                }
+            })
+
+            this.yyLoginTip.on("click", ".close", function (e) {
+                e.preventDefault()
+                that.yyLoginTip.hide()
+                that.loginMaskObj.hide()
+                if(Util.isHezi){
+                    window.open('login://close')
+                }
+            }).on("click", ".dw-account-tip-cancel", function (e) {
+                e.preventDefault()
+                that.yyLoginTip.hide()
+                that.loginMaskObj.hide()
+                if(Util.isHezi){
+                    window.open('login://close')
+                }
+            }).on('click','.dw-account-tip-confirm',function(e){
+                that.yyLoginTip.hide()
+                that.loginMaskObj.hide()
+            })
+
+            var nicking = false
+
+            this.setNickName.on('click', '.close', function (e) {
+                e.preventDefault()
+                that.setNickName.hide()
+                that.loginMaskObj.hide()
+            }).on('click', '.nickname-submit', function (e) {
+                return true;
+                // e.preventDefault()
+
+                // var sign = that.setNickName.data('sign')
+                // if (nicking || !sign) return
+
+                // var username = that.setNickName.find('input').eq(0).val()
+
+                // if (!username) {
+                //     that.showNickNameTip(0, '昵称不能为空')
+                // } else {
+                //     nicking = true
+                //     $.ajax({
+                //         url: Util.toDecorateURL('//bbs.duowan.com/api/uinfo4dw.php?op=register'),
+                //         data: { username: username, sign: sign },
+                //         dataType: 'jsonp',
+                //         success: function (ret) {
+                //             if (ret.code == 1) {
+                //                 that.showNickNameTip(1, '注册成功')
+
+                //                 setTimeout(function () {
+                //                     that.closeLoginPopup()
+                //                     if (/bbs./.test(location.href)) {
+                //                         window.location.reload()
+                //                     }
+                //                 }, 2000);
+                //             } else {
+                //                 that.showNickNameTip(0, ret.msg)
+                //             }
+                //         },
+                //         fail: function (err) {
+                //             that.showNickNameTip(0, err.msg)
+                //         },
+                //         complete: function () {
+                //             nicking = false
+                //         }
+                //     })
+                // }
+            }).on('click', '.nickname-logout', function () {
+                __UDBLogin.logout('')
+            })
+
+            return this
+        },
+        initMutilH5LoginPopup: function (successURL, type) {
+            type = type || 'login'
+
+            this.initLoginTip()
+
+            if (this.type == type && this.multiLoginPopupObj) return this;
+
+            this.type = type;
+
+            //弹窗定制化 主要针对pc.duowan.cn
+            var wxCustomization = typeof successURL == 'object'
+
+            var loginConfig = {
+                wap: Util.isWap,
+                type: type,
+                dropYYLogin: true,
+                dropSinaLogin:true, //删除新浪微博登录
+            }
+
+            if (wxCustomization && Util.isWap) {
+                loginConfig.dropYYLogin = true
+            }
+
+            var loginPopupTpl = __inline("../dwUDBProxy/tpl/wan_h5_login.tmpl")(loginConfig);
+
+            if (this.multiLoginPopupObj) {
+                this.multiLoginPopupObj.html($(loginPopupTpl).html())
+
+                return this;
+            } else {
+                $("body").append(loginPopupTpl)
+            }
+
+            var that = this;
+
+            this.multiLoginPopupObj = $(".dw-account-h5-login")
+
+            //微信登录定制
+            if (wxCustomization) {
+                var wechatClickCallback = successURL.wechatClickCallback
+                successURL = successURL.defaultCallbck
+                if (Util.isWx) {
+                    that.multiLoginPopupObj.on("click", ".login-btn-wechat", function (e) {
+                        e.preventDefault()
+                        that.loginOauth('mp', successURL, 1)
+                        that.loginExtention('wechat')
+                    })
+                } else {
+                    that.multiLoginPopupObj.on("click", ".login-btn-wechat", function () {
+                        wechatClickCallback(that)
+                        that.loginExtention('wechat')
+                    })
+                }
+            } else {
+                that.multiLoginPopupObj.on("click", ".login-btn-wechat", function (e) {
+                    e.preventDefault()
+                    that.loginOauth(Util.isWx ? 'mp' : "weixin", successURL, 1)
+                    that.loginExtention('wechat')
+                })
+            }
+
+            this.multiLoginPopupObj.on('click', '.login-btn-yy', function (e) {
+                $('.udbsdk_login').on('click','.udbsdk_close',function(e){
+                    e.preventDefault()
+                    if(Util.isHezi){
+                        window.open('login://close')
+                    }
+                })
+
+                if (that.type == 'login') {
+                    if (Util.isWap) {
+                        __ThirdLogin.mobileLogin(successURL)
+                    } else {
+                        e.preventDefault()
+                        that.closeLoginPopup()
+                        __UDBLogin.login(successURL)
+                    }
+                } else {
+                    window.open(Util.toDecorateURL('//aq.yy.com/p/reg/mobile.do?fromadv=navigator'));
+                }
+                that.loginExtention('yy')
+            }).on("click", ".login-btn-qq", function (e) {
+                e.preventDefault()
+                that.loginOauth("qq", successURL, 1)
+                that.loginExtention('qq')
+            }).on("click", ".login-btn-weibo", function (e) {
+                e.preventDefault()
+                that.loginOauth("weibo", successURL, 1)
+                that.loginExtention('weibo')
+            }).on("click", ".login-btn-old", function (e) {
+                e.preventDefault()
+                that.closeLoginPopup()
+                that.login(successURL)
+            }).on("click", ".close", function (e) {
+                e.preventDefault()
+                that.closeLoginPopup()
+                if(Util.isHezi){
+                    window.open('login://close')
+                }
+            })
+
+            return this
+        },
+        initMutilLoginPopup: function (successURL, type) {
+            type = type || 'login'
+
+            this.initLoginTip()
+
+            if (this.type == type && this.multiLoginPopupObj) return this;
+
+            this.type = type;
+
+            //弹窗定制化 主要针对pc.duowan.cn
+            var wxCustomization = typeof successURL == 'object'
+
+            var loginConfig = {
+                wap: Util.isWap,
+                type: type,
+                dropYYLogin: true,
+                dropSinaLogin:true, //删除新浪微博登录
+            }
+
+            if (wxCustomization && Util.isWap) {
+                loginConfig.dropYYLogin = true
+            }
+
+            var loginPopupTpl = __inline("../dwUDBProxy/tpl/wan_login.tmpl")(loginConfig);
+
+            if (this.multiLoginPopupObj) {
+                this.multiLoginPopupObj.html($(loginPopupTpl).html())
+
+                return this;
+            } else {
+                $("body").append(loginPopupTpl)
+            }
+
+            var that = this;
+
+            this.multiLoginPopupObj = $(".dw-account-login-pop")
+
+            //微信登录定制
+            if (wxCustomization) {
+                var wechatClickCallback = successURL.wechatClickCallback
+                successURL = successURL.defaultCallbck
+                if (Util.isWx) {
+                    that.multiLoginPopupObj.on("click", ".login-btn-wechat", function (e) {
+                        e.preventDefault()
+                        that.loginOauth('mp', successURL, 1)
+                        that.loginExtention('wechat')
+                    })
+                } else {
+                    that.multiLoginPopupObj.on("click", ".login-btn-wechat", function () {
+                        wechatClickCallback(that)
+                        that.loginExtention('wechat')
+                    })
+                }
+            } else {
+                that.multiLoginPopupObj.on("click", ".login-btn-wechat", function (e) {
+                    e.preventDefault()
+                    that.loginOauth(Util.isWx ? 'mp' : "weixin", successURL, 1)
+                    that.loginExtention('wechat')
+                })
+            }
+
+            this.multiLoginPopupObj.on('click', '.login-btn-yy', function (e) {
+                $('.udbsdk_login').on('click','.udbsdk_close',function(e){
+                    e.preventDefault()
+                    if(Util.isHezi){
+                        window.open('login://close')
+                    }
+                })
+
+                if (that.type == 'login') {
+                    if (Util.isWap) {
+                        __ThirdLogin.mobileLogin(successURL)
+                    } else {
+                        e.preventDefault()
+                        that.closeLoginPopup()
+                        __UDBLogin.login(successURL)
+                    }
+                } else {
+                    window.open(Util.toDecorateURL('//aq.yy.com/p/reg/mobile.do?fromadv=navigator'));
+                }
+                that.loginExtention('yy')
+            }).on("click", ".login-btn-qq", function (e) {
+                e.preventDefault()
+                that.loginOauth("qq", successURL, 1)
+                that.loginExtention('qq')
+            }).on("click", ".login-btn-weibo", function (e) {
+                e.preventDefault()
+                that.loginOauth("weibo", successURL, 1)
+                that.loginExtention('weibo')
+            }).on("click", ".login-btn-old", function (e) {
+                e.preventDefault()
+                that.closeLoginPopup()
+                that.login(successURL)
+            }).on("click", ".close", function (e) {
+                e.preventDefault()
+                that.closeLoginPopup()
+                if(Util.isHezi){
+                    window.open('login://close')
+                }
+            })
+
+            return this
+        },
+        initDuowanLoginPopup: function (successURL) {
+            this.initLoginTip()
+
+            if ($(".account-login-pop").length != 0) return;
+            var cssStyle = __inline("../dwUDBProxy/css/duowan.css");
+            var loginPopupTpl = __inline("../dwUDBProxy/tpl/duowan.tmpl")();
+
+            $("body").append('<style>' + cssStyle + '</style>');
+            $("body").append(loginPopupTpl);
+
+            var that = this;
+            that.loginPopupObj = $(".account-login-pop");
+
+            __UDBLogin.embedLogin("#udbsdk_login_content .udbsdk_login", successURL, 'xelogin', function () {
+                that.closeLoginPopup();
+            });
+            that.loginPopupObj.on("click", ".login-btn-wechat", function (e) {
+                e.preventDefault()
+                that.loginOauth("weixin", successURL)
+            }).on("click", ".login-btn-qq", function (e) {
+                e.preventDefault()
+                that.loginOauth("qq", successURL)
+            }).on("click", ".login-btn-weibo", function (e) {
+                e.preventDefault()
+                that.loginOauth("weibo", successURL)
+            }).on("click", ".close", function (e) {
+                e.preventDefault()
+                that.closeLoginPopup()
+            });
+
+        },
+        initKaLoginPopup: function (successURL) {
+            if ($(".account-login-pop").length != 0) return;
+            var cssStyle = __inline("../dwUDBProxy/css/duowan.css");
+            var loginPopupTpl = __inline("../dwUDBProxy/tpl/duowan.tmpl")();
+
+            var $loginPopupTpl = $(loginPopupTpl)
+            $loginPopupTpl.find('.login-btn-weibo').remove();
+
+            $("body").append('<style>' + cssStyle + '</style>');
+            $("body").append($loginPopupTpl);
+
+            var that = this;
+            that.loginPopupObj = $(".account-login-pop");
+            that.loginMaskObj = $(".account-login-mask");
+
+            __UDBLogin.embedLogin("#udbsdk_login_content .udbsdk_login", successURL, 'xelogin', function () {
+                that.closeLoginPopup();
+            });
+            that.loginMaskObj.on('click', function () {
+                that.closeLoginPopup()
+            })
+            that.loginPopupObj.on("click", ".login-btn-wechat", function (e) {
+                e.preventDefault();
+                var url = '//ka.duowan.com/login/weixin/?type=1&url=' + encodeURIComponent(location.href);
+                $.get(url, function (objResult) {
+                    if (objResult.result) {
+                        alert('登录成功');
+                    } else if (objResult.code === -7 || objResult.code === -5) {
+                        location.href = objResult.data;
+                    } else {
+                        alert(objResult.msg);
+                    }
+                }, 'jsonp');
+            }).on("click", ".login-btn-qq", function (e) {
+                e.preventDefault();
+                var url = '//ka.duowan.com/qq/getUserInfo/?url=' + encodeURIComponent(location.href);
+                $.get(url, function (objResult) {
+                    if (objResult.result) {
+                        alert('登录成功');
+                    } else if (objResult.code === -7 || objResult.code === -5) {
+                        location.href = objResult.data;
+                    } else {
+                        alert(objResult.msg);
+                    }
+                }, 'jsonp');
+            }).on("click", ".close", function (e) {
+                e.preventDefault()
+                that.closeLoginPopup()
+            });
+        },
+        /**提示弹窗 */
+        showTip: function () {
+            if (Util.isWap) return
+            // if(!(/dw_/g).test(Util.getUsername())) return
+            // if( Util.allowShowTips() === false) return //多玩大厅是否允许弹出绑定框
+
+            var self = this
+            this.getUser(function (ret) {
+                if (ret.bindList.length == 0) {
+                    self.yyLoginTip.show()
+                    self.loginMaskObj.show()
+                }else{
+                    if(Util.isHezi){
+                        window.open('login://close')
+                    }
+                }
+            })
+        },
+
+        showNickNameTip: function (type, msg) {
+            var $icon = this.setNickNameTip.children('.input-tip-icon'),
+                $msg = this.setNickNameTip.children('em')
+
+            if (type) {
+                $icon.addClass('succ')
+            } else {
+                $icon.removeClass('succ')
+            }
+
+            $msg.text(msg)
+            this.setNickNameTip.show()
+        },
+
+        closeLoginPopup: function () {
+            if (this.multiLoginPopupObj) this.multiLoginPopupObj.hide()
+            if (this.loginPopupObj) this.loginPopupObj.hide()
+            if (this.loginMaskObj) this.loginMaskObj.hide()
+            if (this.setNickName) this.setNickName.hide()
+            if (this.yyLoginTip) this.yyLoginTip.hide()
+        },
+        /** 登录以外操作 */
+        loginExtention:function(loginType){
+            //多玩游戏大厅-登录类型上报
+            // if(/wan.ouj.com/.test(location.host)){
+            //     var event = /^\/propCenter/.test(location.pathname) ? "dwgameprop_login_" : "dwgame_login_"
+            //     var src="http://clickstats.duowan.com/index.php?r=stats/index&event="+event+loginType
+            //     var img = new Image()
+            //     img.src = src
+            // }
+            return true;
+        }
+    };
+
+    var _appid = '', _baseURL = '', _thirdLoginStyle = 'duowan';
+
+    var __UDBLogin = new UDBLogin(_appid, _baseURL);
+    var __ThirdLogin = new ThirdLogin(_appid, _baseURL, _thirdLoginStyle);
+
+    Util.setDefaultSuccCb().checkLogin()//如果已经登录 直接执行回调
+
+    window.dwUDBProxy = {
+        login: function (successURL, appid) {
+            try {
+                if (appid) {
+                    __UDBLogin.setAppid(appid)
+                    __ThirdLogin.setAppid(appid)
+                }
+
+                if (Util.useMultiLogin()) {
+                    return this.multiLogin(successURL);
+                } else {
+                    return __UDBLogin.login(successURL);
+                }
+            } catch (e) { }
+        },
+        h5Login: function (successURL, appid) {
+            try {
+                if (appid) {
+                    __UDBLogin.setAppid(appid)
+                    __ThirdLogin.setAppid(appid)
+                }
+
+                if (Util.useMultiLogin()) {
+                    return __ThirdLogin.h5MultiLogin(successURL);
+                } else {
+                    return __UDBLogin.login(successURL);
+                }
+            } catch (e) { }
+        },
+        register: function (successURL) {
+            return __ThirdLogin.register(successURL)
+        },
+        kaLogin: function (successURL) {
+            return __ThirdLogin.kaLogin(successURL);
+        },
+        multiLogin: function (successURL) {
+            try {
+                return __ThirdLogin.multiLogin(successURL);
+            } catch (e) { }
+        },
+        mobileLogin: function (successURL) {
+            return __ThirdLogin.mobileLogin(successURL);
+        },
+        logout: function (successURL) {
+            try {
+                return __UDBLogin.logout(successURL);
+            } catch (e) { }
+        },
+        kaLogout: function () {
+            try {
+                return __UDBLogin.kaLogout();
+            } catch (e) { }
+        },
+        isLogin: function () {
+            try {
+                return Util.isLogin();
+            } catch (e) {
+                return false;
+            }
+        },
+        isKaLogin: Util.isKaLogin,
+        getCookie: function (name) {
+            try {
+                if ('username' == name) {
+                    return Util.getUsername();
+                } else {
+                    return Util.getCookie(name);
+                }
+            } catch (e) {
+                return "";
+            }
+        },
+        getUsername: function () {
+            return Util.getUsername();
+        },
+
+        getUid: Util.getUid,
+
+        /**callback(user)*/
+        add: function (callback) {
+            Util.loginSuccCallbacks.add(callback)
+        },
+        /**callback(type) */
+        addBind: function (callback) {
+            Util.bindSuccCallbacks.add(callback)
+        },
+
+        addLogout:function(callback){
+            Util.logoutSuccCallbacks.add(callback)
+        },
+
+        /**绑定相关的操作 */
+        bind: function (type, callback) {
+            return __ThirdLogin.bind(type, callback);
+        },
+        /**
+         * options [object] {type,openid}
+         */
+        unBind: function (options, callback) {
+            return __ThirdLogin.unBind(options, callback);
+        },
+
+        //是否是wap端 一般用于适配
+        isWap: Util.isWap,
+
+        /**第三方获取用户信息接口 */
+        getUser: function (callback) {
+            return __ThirdLogin.getUser(callback)
+        }
+    };
+
+    $(function () {
+        __UDBLogin.embedLogin("#login-embed", '', 'xelogin');
+        __UDBLogin.embedLogin("#mlogin-embed", '', 'xemlogin');
+    })
+})(window, jQuery);

部分文件因文件數量過多而無法顯示