Yan
Новичок
Добрый день! Уже весь день мучаюсь, самому не удалось решить проблему. Делаю аутентификацию через соц сети, в частности, через Vk, но не могу получить email, указал scope, передал в fields, которые надо получить, как пользователь кликнул "Разрешить" использовать эти данные, но все равно пишет Notice: Undefined index: email in ...
Подскажите в чем проблема. Спасибо!
Страница с самой аутентификацией:
Страница с обработчиком, куда делает редирект:
Решение (email лежит в токене):
if (isset($userInfo['response'][0]['uid'])) {
$userInfo['response'][0]['email'] = $token['email'];
$userInfo = $userInfo['response'][0];
$result = true;
}
echo "Имейл пользователя: " . $userInfo['email'] . '<br />';
Подскажите в чем проблема. Спасибо!
Страница с самой аутентификацией:
Код:
$client_id='555555555'; // ID приложения
$client_secret='qwqwqwqwqwqwqwwqwqwqw'; // Ключ приложения
$redirect_uri='http://localhost/user/site'; // Адрес сайта
$url='http://oauth.vk.com/authorize';
$params=array(
'client_id'=>$client_id,
'redirect_uri'=>$redirect_uri,
'response_type'=>'code',
'scope'=>'email'
);
echo $link='<p><a href="' . $url . '?' . urldecode(http_build_query($params)) . '">Аутентификация ВКонтакте</a></p>';
Код:
if (isset($_GET['code'])) {
$result = false;
$params = array(
'client_id' => $client_id,
'client_secret' => $client_secret,
'code' => $_GET['code'],
'redirect_uri' => $redirect_uri
);
$token=json_decode(file_get_contents('https://oauth.vk.com/access_token' . '?' . urldecode(http_build_query($params))), true);
if (isset($token['access_token'])) {
$params=array(
'uids'=>$token['user_id'],
'fields'=>'uid,first_name,last_name,email',
'access_token'=>$token['access_token']
);
$userInfo = json_decode(file_get_contents('https://api.vk.com/method/users.get' . '?' . urldecode(http_build_query($params))), true);
if (isset($userInfo['response'][0]['uid'])) {
$userInfo = $userInfo['response'][0];
$result = true;
}
}
if ($result) {
echo "Имя: " . $userInfo['first_name'] . '<br />';
echo "Фамилия: " . $userInfo['last_name'] . '<br />';
echo "Имейл: " . $userInfo['email'] . '<br />';
}
}
if (isset($userInfo['response'][0]['uid'])) {
$userInfo['response'][0]['email'] = $token['email'];
$userInfo = $userInfo['response'][0];
$result = true;
}
echo "Имейл пользователя: " . $userInfo['email'] . '<br />';
Последнее редактирование: