首页 > 解决方案 > 如何从谷歌登录获取 php 会话数据

问题描述

我正在尝试创建一个网站,用户可以在其中使用谷歌登录(https://developers.google.com/identity/sign-in/web/sign-in)登录。该站点有多个页面,并从 mysql 数据库为用户获取数据。我想将用户的数据(姓名、电子邮件)存储在 php 会话中,以便在访问数据库时为 php 做好准备。登录功能有效,但我不知道如何将数据获取到 php,目前全部在 javascript 中。

标签: phpsession-variablesgoogle-signinsession-stategoogle-api-php-client

解决方案


没有传统的方法可以做到这一点,但我能够从谷歌身份验证令牌中获取信息

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");
}

推荐阅读