public function UserLoginCode() { global $code, $access_token, $debugLog, $debugMode, $vkApi_id, $vkApi_key, $valid_user, $uid, $first_name, $last_name, $screen_name, $photo_50, $photo_200; $tempDebugMode = $debugMode; // Сохранение глобального значения во временную переменную $debugMode = false; // Внутренний вкл/выкл. режима отладки static $funcName = 'VkApi::LoginCode'; // Название функции для логов Debug::Addlog($funcName, 'Начало работы функции.'); //if (!empty($code)) { // Получен код авторизации if (!empty($_GET['code'])) { // Получен код авторизации $code = $_GET['code']; Debug::Addlog($funcName, 'code » Получен код авторизации.'); Debug::Addlog($funcName, 'code » Выполняем запрос к серверу ВК.'); $json = file_get_contents("https://oauth.vk.com/access_token?client_id={$vkApi_id}&client_secret={$vkApi_key}&code={$code}&redirect_uri=" . $_SERVER['SCRIPT_URI']); if ($json) { // Получен корректный ответ от сервера ВК Debug::Addlog($funcName, 'code » Код авторизации корректный.'); Debug::Addlog($funcName, 'code » Получен ответ от сервера ВК.'); $obj = json_decode($json); // Получаем токен $access_token = $obj->{'access_token'}; Debug::Addlog($funcName, 'code » Получен токен доступа.'); $apiResponse = VkApi::api("users.get", "fields=photo_200,photo_50,screen_name"); Debug::Addlog($funcName, 'code » Получены данные пользователя.'); $valid_user = $apiResponse->response[0]; $uid = $apiResponse->response[0]->uid; $first_name = $apiResponse->response[0]->first_name; $last_name = $apiResponse->response[0]->last_name; $screen_name = $apiResponse->response[0]->screen_name; $photo_50 = $apiResponse->response[0]->photo_50; $photo_200 = $apiResponse->response[0]->photo_200; // Регистрируем пользователя в сессии Debug::Addlog($funcName, 'code » Регистрируем пользователя в сессии.'); unset($_SESSION['valid_user']); unset($_SESSION['uid']); unset($_SESSION['first_name']); unset($_SESSION['last_name']); unset($_SESSION['screen_name']); unset($_SESSION['photo_50']); unset($_SESSION['photo_200']); unset($_SESSION['access_token']); $_SESSION['valid_user'] = $valid_user; $_SESSION['uid'] = $uid; $_SESSION['first_name'] = $first_name; $_SESSION['last_name'] = $last_name; $_SESSION['screen_name'] = $screen_name; $_SESSION['photo_50'] = $photo_50; $_SESSION['photo_200'] = $photo_200; $_SESSION['access_token'] = $access_token; // Регистрируем пользователя в куках на 10 лет Debug::Addlog($funcName, 'code » Регистрируем пользователя в куках.'); setcookie("uid", $uid, time() + 315360000, '/', $_SERVER['HTTP_HOST']); setcookie("first_name", $first_name, time() + 315360000, '/', $_SERVER['HTTP_HOST']); setcookie("last_name", $last_name, time() + 315360000, '/', $_SERVER['HTTP_HOST']); setcookie("screen_name", $screen_name, time() + 315360000, '/', $_SERVER['HTTP_HOST']); setcookie("photo_50", $photo_200, time() + 315360000, '/', $_SERVER['HTTP_HOST']); setcookie("photo_200", $photo_200, time() + 315360000, '/', $_SERVER['HTTP_HOST']); setcookie("access_token", $access_token, time() + 315360000, '/', $_SERVER['HTTP_HOST']); Debug::Addlog($funcName, 'code » Обновление страницы...<br>'); $debugMode = $tempDebugMode; // Возвращение переменной глобального значения http_redirect($_SERVER['SCRIPT_URI']); } else { // Некорректный код авторизации Debug::Addlog($funcName, '!code » Ошибка! » Некорректный код авторизации. Завершение работы.<br>'); $debugMode = $tempDebugMode; // Возвращение переменной глобального значения return false; } } elseif (!empty($_COOKIE['access_token']) && !empty($_COOKIE['uid'])) { // Получены регистрационные данные из куков $access_token = $_COOKIE['access_token']; Debug::Addlog($funcName, 'cookie » Получены регистрационные данные из куков.'); Debug::Addlog($funcName, 'cookie » Посылаем запрос на сервер ВК для проверки актуальности рег.данных.'); $apiResponse = VkApi::api("users.get", "fields=photo_200,photo_50,screen_name"); //$apiResponse = VkApi::curlPost("https://api.vk.com/method/users.get?fields=photo_200,screen_name&access_token=$access_token"); //$cookiecheck = json_decode($apiResponse); if (isset($apiResponse->error)) { // Куки устарели Debug::Addlog($funcName, '!cookie » Ошибка! » Регистрационные данные устарели. Завершение работы.<br>'); $debugMode = $tempDebugMode; // Возвращение переменной глобального значения http_redirect("https://oauth.vk.com/authorize?client_id=" . $vkApi_id . "&scope=photos,groups,offline,stats,audio,video,wall,docs&redirect_uri=" . $_SERVER['SCRIPT_URI'] . "&response_type=code&v=5.27"); //return $apiResponse; } else { // Куки актуальны Debug::Addlog($funcName, 'cookie » Регистрационные данные актуальны.'); $valid_user = $apiResponse->response[0]; $uid = $apiResponse->response[0]->uid; $first_name = $apiResponse->response[0]->first_name; $last_name = $apiResponse->response[0]->last_name; $screen_name = $apiResponse->response[0]->screen_name; $photo_50 = $apiResponse->response[0]->photo_50; $photo_200 = $apiResponse->response[0]->photo_200; // Регистрируем пользователя в сессии Debug::Addlog($funcName, 'cookie » Регистрируем пользователя в сессии.'); unset($_SESSION['valid_user']); unset($_SESSION['uid']); unset($_SESSION['first_name']); unset($_SESSION['last_name']); unset($_SESSION['screen_name']); unset($_SESSION['photo_50']); unset($_SESSION['photo_200']); unset($_SESSION['access_token']); $_SESSION['valid_user'] = $valid_user; $_SESSION['uid'] = $uid; $_SESSION['first_name'] = $first_name; $_SESSION['last_name'] = $last_name; $_SESSION['screen_name'] = $screen_name; $_SESSION['photo_50'] = $photo_50; $_SESSION['photo_200'] = $photo_200; $_SESSION['access_token'] = $access_token; // Регистрируем пользователя в куках на 10 лет Debug::Addlog($funcName, 'cookie » Обновляем рег. данные в куках.'); setcookie("uid", $uid, time() + 315360000, '/', $_SERVER['HTTP_HOST']); setcookie("first_name", $first_name, time() + 315360000, '/', $_SERVER['HTTP_HOST']); setcookie("last_name", $last_name, time() + 315360000, '/', $_SERVER['HTTP_HOST']); setcookie("screen_name", $screen_name, time() + 315360000, '/', $_SERVER['HTTP_HOST']); setcookie("photo_50", $photo_200, time() + 315360000, '/', $_SERVER['HTTP_HOST']); setcookie("photo_200", $photo_200, time() + 315360000, '/', $_SERVER['HTTP_HOST']); setcookie("access_token", $access_token, time() + 315360000, '/', $_SERVER['HTTP_HOST']); Debug::Addlog($funcName, 'cookie » Завершение работы функции.<br>'); $debugMode = $tempDebugMode; // Возвращение переменной глобального значения return true; } } else { // Просмотр страницы без регистрации //Debug::Addlog($funcName,'!code & !cookie » Отсутствует код авторизации.'); Debug::Addlog($funcName, '!code & !cookie » Работа в неавторизованном режиме. Завершение работы.<br>'); $debugMode = $tempDebugMode; // Возвращение переменной глобального значения return false; } }