Как получить адрес электронной почты пользователя, прошедшего проверку подлинности в данный момент? в настоящее время возвращается значение null

#php #google-api #google-drive-api #google-oauth #google-api-php-client

#php #google-api #google-drive-api #google-oauth #google-api-php-client

Вопрос:

Я хотел бы видеть адрес электронной почты и имя профиля пользователя, который в данный момент вошел в систему и прошел проверку подлинности в моем веб-приложении.

Серверная часть моего приложения написана на PHP, и в настоящее время я использую официальную клиентскую библиотеку PHP API Google и получаю доступ к учетной записи Google Drive пользователя.

Чтобы получить имя, я пытался перейти через конечную точку userinfo.

 $service = new Google_Service_Drive($client);
echo(serialize($googleOAuth->userinfo->get()->name) . '   ');
 

Однако это не дает мне адреса электронной почты пользователя, который в настоящее время возвращается пустым.

Это области авторизации, которые я запрашиваю у пользователя:

 $client->setScopes(Google_Service_Drive::DRIVE);
$client->setScopes(Google_Service_Oauth2::USERINFO_EMAIL);
$client->setScopes(Google_Service_Oauth2::USERINFO_PROFILE);
 

Как мне получить электронное письмо?

Редактировать

Я добавил области:

 $client->addScope('email');
$client->addScope('profile');
 

И затем он работает с объектом Google_Service_Oauth2.

Ответ №1:

Я не рекомендую использовать конечную точку userinfo для этого, возвращаемые данные возвращаются не всегда. вы должны пройти через people api people.get

 $service = new Google_Service_People($client);
$response = $service->people->get("people/me");
 

Комментарии:

1. Я добавил массив параметров InputFields (‘requestMask.includeField’ => ‘person.names,person.EmailAddresses’). Но я также получаю только имя, а не почту