php - 如何从谷歌登录获取 php 会话数据
问题描述
我正在尝试创建一个网站,用户可以在其中使用谷歌登录(https://developers.google.com/identity/sign-in/web/sign-in)登录。该站点有多个页面,并从 mysql 数据库为用户获取数据。我想将用户的数据(姓名、电子邮件)存储在 php 会话中,以便在访问数据库时为 php 做好准备。登录功能有效,但我不知道如何将数据获取到 php,目前全部在 javascript 中。
解决方案
没有传统的方法可以做到这一点,但我能够从谷歌身份验证令牌中获取信息
function get_var($var_index) {
$id = $_POST["id"];
$id_token = file("https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=" . $id);
$var = str_replace("\"", "", $id_token[$var_index]);
$var = str_replace(",", "", $var);
$var = substr($var, strpos($var, ":") + 2 );
return $var;
}
$name = get_var(12);
$email = get_var(5);
$img_url = get_var(13);
$exp = get_var(8);
$iss = get_var(9);
if ($_SERVER['REQUEST_TIME'] < $exp) {
session_start();
$_SESSION["name"] = $name;
//$_SESSION["imageurl"] = $img_url;
$_SESSION["email"] = $email;
$_SESSION["exp"] = $exp; // when to auto logout
header("LOCATION: page.php");
exit();
} else{
header("LOCATION: loginpage.html");
}
推荐阅读
- php - 从多个函数中访问数据
- css - 如何在闪亮进度条的详细信息中添加换行符?
- javascript - Fetch API POST 请求响应返回空文本
- c++ - 如何在单独的源文件中定义模板函数并调用它,只包括标题
- ios - 类型不符合协议“可编码”
- konvajs - 向 Konva 形状添加描边而不增加其大小
- javascript - javascript scrollIntoView 函数在我的全局事件侦听器中不起作用
- javascript - 如何将 DOM 数据转换为 json
- html - 圆形元素上的框阴影
- asp.net-core - Kubernetes:向环境添加入口内部 ip