javascript - 如何解决谷歌登录后javascript不重定向的问题?
问题描述
我正在尝试在我的网站上实施 Google 登录。如何将用户重定向到已登录的会员页面?
我现在可以验证令牌,验证后,用户应该被重定向到登录成员页面,我尝试使用 javascript 来执行此操作,但它似乎无法正常工作。
我试过在控制台中手动输入javascript,登录成功。
<?php
...
require_once 'vendor/autoload.php';
$client = new Google_Client();
$client->setScopes('email');
$payload = $client->verifyIdToken($id_token);
if ($payload == true) {
$userid = $payload['sub'];
//check user existance
if ($check_googleuser_result->num_rows == 1) {
$_SESSION['loggedin_userlogin'] = $email;
//redirect user
echo '<script>window.location = "loggedin.php";</script>';
} else {
echo 'No matched user';
//signout user
echo '<script>location.replace("gsignout.php");</script>';
}
} else {
echo 'error';
//signout user
echo '<script>location.replace("gsignout.php");</script>';
}
?>
成功检查用户是否存在后,应重定向用户。
实际输出是会话已创建,但 javascript 未执行重定向。
更新: background1 的屏幕截图 background2 的 屏幕截图
解决方案
当您尝试在 php 代码中重定向时,您还应该使用 php 提供的函数。
为此,有一个名为header()的函数
所以你的代码看起来像这样:
<?php
...
require_once 'vendor/autoload.php';
$client = new Google_Client();
$client->setScopes('email');
$payload = $client->verifyIdToken($id_token);
if ($payload == true) {
$userid = $payload['sub'];
//check user existance
if ($check_googleuser_result->num_rows == 1) {
$_SESSION['loggedin_userlogin'] = $email;
//redirect user
header('Location: loggedin.php');
} else {
echo 'No matched user';
//signout user
header('Location: gsignout.php');
}
} else {
echo 'error';
//signout user
header('Location: gsignout.php');
}
?>
推荐阅读
- amazon-web-services - 无服务器框架的 Lambda 函数别名?
- node.js - 如何遍历多个用户以及 FireStore 中的一个用户
- android - Android 10 NFC 应用程序 - 在 MS Intune Kiosk 模式下手机睡眠时停止工作
- python - Python 多处理装饰器在酸洗时失败
- powershell - Powershell 错误 + 无法将值“System.String”转换为类型“System.Management.Automation.SwitchParameter”
- c# - DateTimePicker 和 PostgreSQL 数据表搜索
- python - 如何在不阻塞 PyQt 主程序的情况下制作弹出窗口?
- mysql - 选择有该产品的店铺(mysql查询)
- python - 带有管道的 Sklearn RFE
- powerbi - 没有日期列的 Power BI 中的累积总计