异常描述
我使用帐号 A 登录授权以后,获取到帐号 A 的信息,然后退出。
再使用另一个帐号 B 登陆授权以后,获取的信息依然是帐号 A 的信息。
但过上一段时间(无法确定多久时间),再使用帐号 B 登陆授权,可以获取帐号 B 的信息,再退出。
再使用帐号 A 登陆,获取的信息依然是帐号 B 的信息,这是怎么一回事情啊?
测试地址: http://www.euask.com/oauth/google.php
代码如下:
<?php
require_once __DIR__ .'/g/vendor/autoload.php';
session_start();
$client = new Google_Client();
$client->setAuthConfigFile('client_secrets.json');
$client->setRedirectUri('http://www.euask.com/oauth/google.php');
$client->setScopes(array(
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/plus.login',
'https://www.googleapis.com/auth/plus.me'
));
// $client->addScope(Google_Service_Oauth2::USERINFO_EMAIL);
$plus = new Google_Service_Oauth2($client);
if (isset($_REQUEST['logout'])) {
session_unset();
}
if (isset($_GET['code'])) {
$client->authenticate($_GET['code']);
$_SESSION['access_token'] = $client->getAccessToken();
$redirect = 'http://www.euask.com/oauth/google.php';
header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
}
if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
$client->setAccessToken($_SESSION['access_token']);
$me = $plus->userinfo->get();
$id = $me['id'];
$name = $me['givenName'];
$email = $me['email'];
$profile_image_url = $me['picture'];
} else {
$auth_url = $client->createAuthUrl();
}
?>
<div>
<?php
if (isset($auth_url)) {
echo "<a href='".filter_var($auth_url, FILTER_SANITIZE_URL)."'>Google login</a>";
} else {
// print "ID: {$id} <br />";
print "Name: {$name} <br />";
print "Email: {$email} <br />";
print "Image: {$profile_image_url} <br />";
echo "<a href='?logout'>Sign out</a>";
}
?>
</div>