Laravel - 如何在当前页面上返回json而不是弹出窗口

时间:2018-05-18 14:58:45

标签: laravel vue.js oauth

我正在使用Laravel和Vuejs构建SPA,所以我想让用户在弹出窗口中使用github登录,但问题是授权回调函数在弹出窗口而不是当前页面上返回json数据。

这是一段代码:

客户端

authenticate() {
            window.open("login/github", "_blank", "toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=400,height=400");
        }

服务器端

public function redirectToProvider($service, Request $request)
{
    return Socialite::driver($service)->stateless()->redirect();
}

public function handleProviderCallback($service, Request $request)
{
    $providerUser = Socialite::driver($service)->stateless()->user();

    return new JsonResponse([
        'data' => $providerUser
    ]);
}

我需要在用户成功登录时关闭弹出窗口,而不是handleProviderCallback在当前页面上返回json。知道怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

父窗口

<button type="button" onclick="openNewWindow()">Login With Github</button>
    <script>
        var win = null;
        function openNewWindow() {
            win = window.open("ukulele.html", "_blank", "toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=400,height=400");
            win.focus();
        }
        window.saveToken = function() {
            console.log(win.document.getElementById('json_data_here').value)
        }
    </script>

子窗口:使用github成功登录后,将令牌保存到隐藏的输入并关闭窗口:

<input type="hidden" id="json_data_here" value="aadcs"/>
<script>
    window.opener.saveToken();
    window.close();
</script>