Laravel社交登录弹出窗口

12

我正在按照另一个帖子中的指示操作。 弹出窗口身份验证的简单示例。问题是我无法在我的 Laravel 应用程序中使其正常工作。我对 cookie 不太了解,也不确定在代码中应该如何处理 $('#UserInfo').text($.cookie("some_cookie"));

我已经实现了 Facebook 登录弹出窗口。但问题是,当我成功登录时,它不会关闭弹出窗口,而是加载重定向路径到它。

我想要在成功登录后关闭弹出窗口,然后加载父级的下一个路由。

<input id="btn-facebook" type="button" value="Connect with Facebook" />
<script src="{{ asset('js/jquery.cookie.js') }}"></script>
<script>
    var signinWin;
    $('#btn-facebook').click(function () {
         //   var pos = screenCenterPos(800, 500);
            signinWin = window.open("{!!URL::to('facebook')!!}", "SignIn", "width=780,height=410,toolbar=0,scrollbars=0,status=0,resizable=0,location=0,menuBar=0,left=" + 500 + ",top=" + 200);
            setTimeout(CheckLoginStatus, 2000);
            signinWin.focus();
            return false;
        });

    function CheckLoginStatus() {
        if (signinWin.closed) {
            $('#UserInfo').text($.cookie("some_cookie"));
        }
        else setTimeout(CheckLoginStatus, 1000);
    }

</script>

将受保护的URL存储在会话中 > 在弹出窗口中使用oAuth进行连接,成功验证> cookie将被更新为已验证您的站点,只需关闭弹出窗口,从会话存储重定向到受保护的URL。 - Stack learner
关闭弹出窗口是指您始终可以从父级控制子弹出窗口,编写一小段JS代码即可实现。 - Stack learner
你正在使用哪个版本的Laravel? - John Roca
2个回答

8

一旦您成功通过Facebook API进行身份验证,Facebook将重定向您到设置的重定向路径(默认行为)。

此路径与您在Facebook API仪表板上为应用程序设置的路径相同。一旦您从Facebook重定向到配置的路径,您必须从此时开始管理会话、cookie等等。

如果这对您有所帮助,请告诉我们。


3

Laravel支持社交媒体整合,并提供官方包。 Socialite for Laravel

它有完善的文档和出色的代码示例。

针对您的问题,我将尝试解释您的代码的作用:

首先,您有一段可以打开新窗口的代码。

signinWin = window.open("{!!URL::to('facebook')!!}", "SignIn", "width=780,height=410,toolbar=0,scrollbars=0,status=0,resizable=0,location=0,menuBar=0,left=" + 500 + ",top=" + 200);

代码检查窗口是否关闭

if (signinWin.closed) {

这段代码 $('#UserInfo').text($.cookie("some_cookie")); 只会将文本值设置到 ID 为 "UserInfo" 的元素中,它不会做任何事情。
为了让窗口关闭,你需要添加以下内容:
signinWin.close()

将其添加到您的代码中。或者,您可以通过设置在相同窗口中打开窗口:

window.open("{!!URL::to('facebook')!!}", "_self", "width=780,height=410,toolbar=0,scrollbars=0,status=0,resizable=0,location=0,menuBar=0,left=" + 500 + ",top=" + 200);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接