【问题标题】:Laravel - how to return json on current page instead of popup windowLaravel - 如何在当前页面而不是弹出窗口上返回 json
【发布时间】:2018-05-21 18:38:50
【问题描述】:

我正在使用 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。知道如何解决这个问题吗?

【问题讨论】:

    标签: laravel vue.js oauth


    【解决方案1】:

    父窗口

    <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成功登录后,将token保存到隐藏输入并关闭窗口:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-30
      • 1970-01-01
      • 2022-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多