我在网站上用Java实现了Twitter oauth,我在登录弹出窗口时遇到了问题。
我在弹出窗口中打开授权URL,当用户完成登录进程时,Twitter会重定向到弹出窗口中的回调URL。我需要知道,是否可以关闭弹出窗口并重定向到父页面中的回调URL。
答案 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。 我知道这不是一个很好的方法,但我找不到任何有用的东西。