2009-06-29 43 views
2

我刚刚成功地为使用PHP的Twitter应用程序创建oAuth身份验证。他们是如何在这里使用Twitter oAuth的?

然后我看到了this site,我很惊讶他们如何打开一个新窗口,关闭该窗口,然后在初始窗口中继续请求?有人可以用一些Javascript解释(我猜他们正在使用这个)他们是怎么做到的?!

我注意到当第二个窗口关闭时,他们发出两个GET请求。

我希望能够做到这样的事情,因为我的用户可以在我的网站上写内容,我不希望被删除。有没有更好的方式不那么突兀? (窗口弹出打开)。如果没有,我会用他们的方法,因为我想不出别的。

感谢所有

回答

1

这里的JavaScript代码是关系到该部分:

TG.util.oauth = { 
    win: null, 
    timer: null, 
    loginUpdate: function() { 
     $.getJSON('/-login/check?format=json', TG.util.oauth.loginCallback); 
    }, 
    loginCallback: function(data) { 
     if (data && data.loggedin) { 
      TG.util.login.update(data); 
     } 
    }, 
    winCheck: function() { 
     if (!TG.util.oauth.win || TG.util.oauth.win.closed) { 
      window.clearInterval(TG.util.oauth.timer); 
      return TG.util.oauth.loginUpdate(); 
     } 
    }, 
    loginClick: function() { 
     TG.util.oauth.win = window.open('/-oauth-twitter/request?gotoafter=1&gotor=oauthtwitter&gotop=action%3Dwindowend', 
      'OAuthTwitterRequest', 
      'menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes,width=800,height=400'); 
     if (!TG.util.oauth.win) return true; 

     TG.util.oauth.timer = window.setInterval(TG.util.oauth.winCheck, 300); 
     return false; 
    } 
}; 

TG.util.oauth.win = window.open('/-oauth-twitter/request?gotoafter=1&gotor=oauthtwitter&gotop=action%3Dwindowend','OAuthTwitterRequest','menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes,width=800,height=400');
打开OAuth的窗口,它处理登录

if (!TG.util.oauth.win) return true;
返回true,如果窗口没有打开(我猜)。

TG.util.oauth.timer = window.setInterval(TG.util.oauth.winCheck, 300);
产生一个计时器,用于检查登录是否每300毫秒完成一次。

相关问题