Intereting Posts
API Facebook без аутентификации клиента для общего контента htmlentities не дает желаемого результата в laravel Предварительная инкрементация против постинкрементации Является ли неправильная практика делать запрос Ajax непосредственно из плагина jQuery? jQuery Validation – Невозможно вызвать метод «вызов» неопределенного поиск файла в php, который состоит из 4 каталогов Ширина пользовательского изображения Instagram API Создайте новые учетные данные аутентификации HTTP, используя PHP вместо оболочки Объедините png ontop из jpg и сохраните прозрачность с помощью php Как отобразить изображение категории Woocommerce? PHP переписывает включенный файл – это допустимый скрипт? jQuery submit ajax form с двумя кнопками отправки Предупреждение: назначение в состоянии Печатать что-то на встроенном веб-сервере PHP MySQL правильный синтаксис для использования рядом с '' при ошибке линии 1

Как получить адрес электронной почты при аутентификации пользователя с помощью Google Oauth2 и people.me

Я новичок в php и google api, я пытаюсь получить адрес электронной почты, когда пользователь поет в Google+, я получаю всю информацию о пользователе, используя $ plus-> people-> get («me»), но когда Я пытаюсь получить адрес электронной почты с ошибкой:

Примечание PHP: неопределенный индекс: значение

вот мой код:

<?php session_start(); set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] . "/src"); require_once 'Google/Client.php'; require_once 'Google/Service/Plus.php'; $client_id = 'XXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com'; $client_secret = 'XXXXXXXXXXXXXXXXXXX'; $redirect_uri = 'http://www.XXXXXXXXXXXXXX.com/pruebas.php'; $client = new Google_Client(); $client->setClientId($client_id); $client->setClientSecret($client_secret); $client->setRedirectUri($redirect_uri); $client->addScope("https://www.googleapis.com/auth/userinfo.profile"); $client->addScope("https://www.googleapis.com/auth/userinfo.email"); $plus = new Google_Service_Plus($client); if (isset($_REQUEST['logout'])) { unset($_SESSION['access_token']); } if (isset($_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)); } if (isset($_SESSION['access_token']) && $_SESSION['access_token']) { $client->setAccessToken($_SESSION['access_token']); $_SESSION['token'] = $client->getAccessToken(); } else { $authUrl = $client->createAuthUrl(); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title>Pruebas</title></head> <body> <?php if (isset($authUrl)) { print "<a class='login' href='$authUrl'><img src='logogoo/Red-signin-Medium-base-32dp.png'></a>"; } else { print "<a class='logout' href='pruebas.php?logout'>Cerrar:</a>"; } if (isset($_SESSION['access_token'])) { $me = $plus->people->get("me"); print "<br>ID: {$me['id']}\n<br>"; print "Display Name: {$me['displayName']}\n<br>"; print "Image Url: {$me['image']['url']}\n<br>"; print "Url: {$me['url']}\n<br>"; $name3 = $me['name']['givenName']; echo "Nombre: $name3 <br>"; //Everything works fine until I try to get the email $correo = ($me['emails']['value']); echo $correo; } ?> </body> </html> 

Я просто хочу получить адрес электронной почты учетной записи от $ me, чтобы сохранить его в своем приложении.

Благодарю.

$ me ['emails'] – это массив, а не хэш. Поэтому добавьте [0] для выбора первого Mailadress:

 $correo = ($me['emails'][0]['value']); 

Теперь он должен работать нормально …