![](/img/trans.png)
[英]Window popup close and refresh the parent page on successful login Facebook
[英]Javascript Facebook Api Login and Close Popup Refresh Parent Page
我想让用户登录后关闭我的facebook api登录弹出窗口,在用户单击带有facebook图像的登录名后,弹出窗口成功打开,并且在用户登录弹出窗口后,弹出窗口仍然保留在那里并重定向到我成功登录的网站,但是,我希望在用户成功登录后关闭弹出窗口,并将父登录页面重定向到主页。
谢谢,
这是我所做的:
Javascript的:
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '<?php echo $_setting['facebook_api']; ?>',
channelUrl : '//<?php echo $website; ?>/channel.html',
status : true,
cookie : true,
xfbml : true
});
};
(function(d) {
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>
<script type="text/javascript">
function popup(url)
{
var width = 600;
var height = 400;
var left = (screen.width - width)/2;
var top = (screen.height - height)/2;
var params = 'width='+width+', height='+height;
params += ', top='+top+', left='+left;
params += ', directories=no';
params += ', location=no';
params += ', menubar=no';
params += ', resizable=no';
params += ', scrollbars=no';
params += ', status=no';
params += ', toolbar=no';
newwin=window.open(url,'FB', params);
opener.location.reload();
if (window.focus) {newwin.focus()}
return false;
}
</script>
用户登录部分:
<a href="javascript:void(0)"
onclick="popup('https://www.facebook.com/dialog/oauth?client_id=<?php echo $_setting['facebook_api']; ?>
&redirect_uri=<?php echo urlencode($website."/index.php"); ?>
&cancel_url=<?php echo urlencode($website."/register"); ?>
&scope=email')">
<img src="<?php echo $website; ?>/images/fb.png" /></a>
只需输出“ window.parent.location =“ www.pageafterlogin”; window.close();“ 在子窗口中对我不起作用。 我必须使用一个间隔来检查子窗口(弹出窗口)是否已关闭。
这是我为使其工作而编写的功能(我的登录按钮是锚,其类设置为“ facebook_connect”):
$(document).ready(function() {
initFacebookConnect();
});
var fbTimer, fbChildWindow;
function fbPolling() {
if(fbChildWindow && fbChildWindow.closed) {
// The popup has been closed, stop the timer and reload window.
clearInterval(fbTimer);
window.location.href = window.location.href;
}
}
function initFacebookConnect() {
$('a.facebook_connect').click(function(event) {
event.preventDefault();
var url = $(this).attr('href');
fbChildWindow = window.open(url, 'Facebook', 'status=1, resizable=0');
fbTimer = setInterval('fbPolling()', 1000);
});
}
在Facebook重定向到的页面内(redirect_uri页面),我写道:
<script>window.close();</script>
我希望这对某人有用:)
您需要登录名才能重定向到将运行window.close()的页面,并使用window.parent将主页页面重定向到您想要的页面
尝试将代码添加到登录重定向到的页面(在弹出窗口内)window.parent.location =“ www.pageafterlogin”; window.close();
即时通讯目前是从我的手机上编写的,因此有点难,但这应该可以解决问题。 如果没有,我明天将尝试重写它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.