我正在使用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。知道怎么解决这个问题?
答案 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>