Google云端硬盘 - 需要从OAuth(或其他地方)获取电子邮件地址

时间:2016-10-15 04:30:27

标签: google-drive-api

我已经阅读了很多帖子并尝试了尽可能多的工作,最后得到了部分答案 - 我收到了用户信息的回复,但它不包含我在寻找的电子邮件地址第一名。

define('SCOPES', implode(' ', array(
        Google_Service_Drive::DRIVE,
        Google_Service_Oauth2::USERINFO_EMAIL,
        Google_Service_Oauth2::USERINFO_PROFILE,
        Google_Service_Oauth2::PLUS_ME)
));

注意:我知道有些可能不是必需的,但比对不起更安全.. ?? ..

$accessToken = "{\"access_token\":\"ya29.CjR9A6X75 bla bla bla 02913}";

$client = new Google_Client();
$client->setApplicationName(APPLICATION_NAME);
$client->setScopes(SCOPES);
$client->setAuthConfigFile(CLIENT_SECRET_PATH);
$client->setState($userId);
$client->setAccessType('offline');

// set the accessToken
$client->setAccessToken($accessToken);

$googleOAuth  = new Google_Service_Oauth2($client);
$result = $googleOAuth->userinfo->get();

var_dump($result);

$ result的转储有一些信息但不是电子邮件......

$ result =

的片段
  ["locale"]=>
  string(2) "en"
  ["name"]=>
  string(11) "Fred Flintstone"
  ["email"]=>
  NULL
  ["id"]=>
  string(21) "1111111111111111111111"
  ["picture"]=>
  string(92) "https://bla blabla/photo.jpg"
  ["verifiedEmail"]=>
  NULL

任何人都可以了解为什么'我没有收到回复的电子邮件,我真的需要它。或者也许我可能没有尝试过一些建议?

谢谢,

约翰

1 个答案:

答案 0 :(得分:0)

找到一个对我有用的答案...我现在收到一个电子邮件地址,我的更改如下所示。

使用这些范围

define('SCOPES', implode(' ', array(
    Google_Service_Drive::DRIVE,
    Google_Service_Drive::DRIVE_FILE,
    Google_Service_Oauth2::USERINFO_EMAIL)
));

//获取电子邮件地址

$googleOAuth  = new Google_Service_Oauth2($client);
$email = $googleOAuth->userinfo->get()->email;

感谢您的帮助&长相

约翰