Php中的Google登录会话

问题描述 投票:0回答:1

我为我的网站编写了一个Google登录程序。用户需要使用他或她的特定学校gmail。但是,我遇到了一个问题。如果用户意外尝试使用不是他的学校电子邮件的另一个Gmail登录,该网站会警告他“你应该使用你的学校gmail”并将他带回登录页面。但是,如果他再次尝试点击“使用Google登录”(因为理想情况下他会选择正确的Google电子邮件地址),他以前的Google帐户的会话仍然在运行,甚至没有让他选择尝试他的其他Gmail帐户。我不确切知道该做什么...我会破坏会话吗?用户是否必须手动注销?这是错误处理代码。

    unset($_SESSION['token']);
    $authUrl = $client->createAuthUrl();
    echo ("<SCRIPT LANGUAGE='JavaScript'>
        window.alert('You need to login with your school Google account.')
        window.location.href='http://websitename.com/login';
        </SCRIPT>");
php session login gmail google-oauth
1个回答
0
投票

如果在销毁会话后,Google身份验证网址会将您直接重定向到您的重定向文件,则可能是因为不需要分配新的Google访问令牌。如果您不需要存储和重复使用相同的访问令牌,并希望用户每次使用Google进行身份验证时都要登录,则必须在使用后撤消令牌。

要撤消访问令牌,您必须执行以下行

$client->revokeToken();

此行为的示例代码如下:

$client->setAccessToken($access_token);

  if (!$client->isAccessTokenExpired()) {
    try {

      $plus = new Google_Service_Plus($client); // starts google profile (plus) service
      $me = $plus->people->get('me'); // saves account info
      $email = $me->emails[0]->value; // email
      $id = $me->id; // id
      $name = $me->name->givenName; // name
      $surname = $me->name->familyName; // surname

      $client->revokeToken();

      $user = updateUser($email, $name, $surname, $id, $pic, $shortener); // proprietary function

    } catch (Google_Exception $e) {

      abortLogin("couldn't check google profile details", true); // proprietary function

    }

  } else {

     abortLogin("invalid token", true); // proprietary function

  }

session_destroy();
© www.soinside.com 2019 - 2024. All rights reserved.