#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’). Но я также получаю только имя, а не почту