Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не могу получить email из Vkontakte при аутентификации через него

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Yan9
Отправлено: 22 Октября, 2015 - 20:01:58
Post Id


Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Авг. 2015  


Помог: 0 раз(а)




Добрый день! Уже весь день мучаюсь, самому не удалось решить проблему. Делаю аутентификацию через соц сети, в частности, через Vk, но не могу получить email, указал scope, передал в fields, которые надо получить, как пользователь кликнул "Разрешить" использовать эти данные, но все равно пишет Notice: Undefined index: email in ...
Подскажите в чем проблема. Спасибо!

Страница с самой аутентификацией:
PHP:
скопировать код в буфер обмена
  1.     $client_id='555555555'; // ID приложения
  2.     $client_secret='qwqwqwqwqwqwqwwqwqwqw'; // Ключ приложения
  3.     $redirect_uri='http://localhost/user/site'; // Адрес сайта
  4.  
  5.     $url='http://oauth.vk.com/authorize';
  6.  
  7.     $params=array(
  8.         'client_id'=>$client_id,
  9.         'redirect_uri'=>$redirect_uri,
  10.         'response_type'=>'code',
  11.         'scope'=>'email'
  12.     );
  13.     echo $link='<p><a href="' . $url . '?' . urldecode(http_build_query($params)) . '">Аутентификация ВКонтакте</a></p>';


Страница с обработчиком, куда делает редирект:
PHP:
скопировать код в буфер обмена
  1. if (isset($_GET['code'])) {
  2.     $result = false;
  3.     $params = array(
  4.         'client_id' => $client_id,
  5.         'client_secret' => $client_secret,
  6.         'code' => $_GET['code'],
  7.         'redirect_uri' => $redirect_uri
  8.     );
  9.  
  10.     $token=json_decode(file_get_contents('https://oauth.vk.com/access_token' . '?' . urldecode(http_build_query($params))), true);
  11.  
  12.     if (isset($token['access_token'])) {
  13.         $params=array(
  14.             'uids'=>$token['user_id'],
  15.             'fields'=>'uid,first_name,last_name,email',
  16.             'access_token'=>$token['access_token']
  17.         );
  18.  
  19.         $userInfo = json_decode(file_get_contents('https://api.vk.com/method/users.get' . '?' . urldecode(http_build_query($params))), true);
  20.         if (isset($userInfo['response'][0]['uid'])) {
  21.             $userInfo = $userInfo['response'][0];
  22.             $result = true;
  23.         }
  24.     }
  25.  
  26.     if ($result) {
  27.         echo "Имя: " . $userInfo['first_name'] . '<br />';
  28.         echo "Фамилия: " . $userInfo['last_name'] . '<br />';
  29.         echo "Имейл: " . $userInfo['email'] . '<br />';
  30.     }
  31. }


Решение (email лежит в токене):
if (isset($userInfo['response'][0]['uid'])) {
$userInfo['response'][0]['email'] = $token['email'];
$userInfo = $userInfo['response'][0];
$result = true;
}

echo "Имейл пользователя: " . $userInfo['email'] . '<br />';

(Отредактировано автором: 23 Октября, 2015 - 01:36:42)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB