Heim > Backend-Entwicklung > PHP-Tutorial > Google Oauth2 获取用户信息,遇到一个诡异的问题

Google Oauth2 获取用户信息,遇到一个诡异的问题

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-06 20:18:12
Original
1855 Leute haben es durchsucht

异常描述
我使用帐号 A 登录授权以后,获取到帐号 A 的信息,然后退出。
再使用另一个帐号 B 登陆授权以后,获取的信息依然是帐号 A 的信息。
但过上一段时间(无法确定多久时间),再使用帐号 B 登陆授权,可以获取帐号 B 的信息,再退出。
再使用帐号 A 登陆,获取的信息依然是帐号 B 的信息,这是怎么一回事情啊?

测试地址: http://www.euask.com/oauth/google.php

<code><?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";
    } 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></code>
Nach dem Login kopieren
Nach dem Login kopieren

回复内容:

异常描述
我使用帐号 A 登录授权以后,获取到帐号 A 的信息,然后退出。
再使用另一个帐号 B 登陆授权以后,获取的信息依然是帐号 A 的信息。
但过上一段时间(无法确定多久时间),再使用帐号 B 登陆授权,可以获取帐号 B 的信息,再退出。
再使用帐号 A 登陆,获取的信息依然是帐号 B 的信息,这是怎么一回事情啊?

测试地址: http://www.euask.com/oauth/google.php

<code><?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";
    } 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></code>
Nach dem Login kopieren
Nach dem Login kopieren
Verwandte Etiketten:
php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
PHP-Datenerfassung?
Aus 1970-01-01 08:00:00
0
0
0
PHP-Erweiterung intl
Aus 1970-01-01 08:00:00
0
0
0
Wie man PHP gut lernt
Aus 1970-01-01 08:00:00
0
0
0
Mehrere PHP-Versionen
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage