我刚刚使用PHP为我的twitter应用程序创建了oAuth身份验证。
然后我看到了this site,我很惊讶他们如何打开一个新窗口,关闭该窗口然后在初始窗口中继续请求?!有人可以解释一些Javascript(我猜它们正在使用它)他们是如何做到这一点的?!
我注意到第二个窗口关闭后会发出两个GET请求。
我希望能够做到这样的事情,因为我的用户可以在我的网站上写内容而我不希望它被删除。有没有更好的方式不那么突兀? (窗口弹出)。如果没有,我将使用他们的方法,因为我想不出别的。
全部谢谢
答案 0 :(得分: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毫秒完成一次。