如何在PHP中使用Google auth获取用户电子邮件


how to get users email using Google auth in PHP?

我已经在GOOGLE成功创建了API注册。要登录我的网站,我使用这个链接:

https://accounts.google.com/o/oauth2/auth?response_type=code&redirect_uri=http://www.example.com/goo/gaccess.php&client_id=109717......9-0r0..............avubqdddi5j.....apps.googleusercontent.com&scope=email

点击此链接后,谷歌要求您接受是否允许此应用程序访问您的信息。单击接受后,用户重定向到我添加脚本的页面。

<?php
  require_once realpath(dirname(__FILE__) . '/google-api-php-client-master/src/Google/autoload.php'); // or wherever autoload.php is located
if (isset($_GET['code'])) {

echo $access_token = $_GET['code'];    
  $client->authenticate($_GET['code']);
  $_SESSION['access_token'] = $client->getAccessToken();
  $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
  header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
}
  ?>

问题是我不知道该怎么做才能获得用户的信息和电子邮件id。我想在用户接受访问我的网站后将其显示给他们。我现在得到的只是一个代码:

 4/v3Lbc...............o15_kBpgqItOOcR-BAm9FA.ksVbL...............KaDJMaXmAI

此外,我还安装了一个用于访问GoogleAPI的PHP客户端库。

您使用中示例项目中所述的代码

if ($client->getAccessToken()) {
$user = $oauth2->userinfo->get();
// These fields are currently filtered through the PHP sanitize filters.
// See http://www.php.net/manual/en/filter.filters.sanitize.php
$email = filter_var($user['email'], FILTER_SANITIZE_EMAIL);
$img = filter_var($user['picture'], FILTER_VALIDATE_URL);
$personMarkup = "$email<div><img src='$img?sz=50'></div>";
// The access token may have been updated lazily.
$_SESSION['token'] = $client->getAccessToken();
}