关闭Twitter Oauth登录弹出窗口并通过回调重定向到父级

时间:2014-03-18 13:51:11

标签: javascript twitter oauth popup

我在网站上用Java实现了Twitter oauth,我在登录弹出窗口时遇到了问题。

我在弹出窗口中打开授权URL,当用户完成登录进程时,Twitter会重定向到弹出窗口中的回调URL。我需要知道,是否可以关闭弹出窗口并重定向到父页面中的回调URL。

1 个答案:

答案 0 :(得分:0)

最后我找到了解决方案。 我也在Twitter开发者论坛上发帖。 这就是我所做的:

我设置了一个具有每秒运行一次的函数的计时器。 在该功能中,我检查弹出网址,虽然我不在我的域名中,但是当启动callBack网址时,窗口会回到我的域名,我读取了de URL,如果我能找到oauth_verifier作为URL中的字段我关闭弹出窗口并读取URL以恢复验证者。

function loginTwitter(){
    var f = document.forms["MainForm"];   
    var url = "https://api.twitter.com/oauth/authorize?oauth_token=***********";
    var myWindow = window.open(url,"","resizable=yes,width=600,height=400,toolbar=no,titlebar=no,menubar=no,scrollbars=yes");
    var timer = setInterval(checkWindow, 1000); 

    function checkWindow() {

     try {
         var ur = myWindow.location.href; 

         if (ur.indexOf('oauth_verifier') != -1){

             var verifier = "";

             var token = "";

             clearInterval(timer);

             myWindow.close();

             ur = ur.substring(ur.indexOf('?')+1);

             var urPartes = ur.split('&');

             for (i = 0; i < urPartes.length; i++){

                if (urPartes[i].indexOf('oauth_verifier') != -1){
                   verifier = urPartes[i].split('=')[1];
                }

                if (urPartes[i].indexOf('oauth_token') != -1){
                        token = urPartes[i].split('=')[1];
                }
             }

             f.oauth_verifier.value = verifier;

             f.oauth_token.value = token;

             //here an AJAX call is done with the params in the form to do the final verification against twitter i nthe server

         }

     } catch (e){

     } //end catch     
  }//end function checkWindow
}//end function loginTwitter

try / catch块是为了避免&#34; myWindow.location.href&#34;的错误。当我弹出它不在我的域名时,我试图访问该URL。 我知道这不是一个很好的方法,但我找不到任何有用的东西。