function _pluginMain($arg) { global $site, $pattcontainer, $pattmedia, $pattsearch, $pattinfo, $pattthumb, $radio, $pattradio, $needswitch, $needinfo; parse_str($arg); $vk = new VkApi(); $vk->app_id = "3795305"; $vk->access_token = strPar("ACCSES_TOKEN"); //Первая страница плагина if (@(!$url)) { $ret[] = Container("url=audio", "Мои аудиозаписи", "http://127.0.0.1/umsp/plugins/potter/audio.png"); $ret[] = Container("url=audio_rec", "Рекомендуемые аудиозаписи", "http://127.0.0.1/umsp/plugins/potter/audio_rec.png"); $ret[] = Container("url=video", "Мои видеозаписи", "http://127.0.0.1/umsp/plugins/potter/video.png"); return $ret; } //Аудиозаписи if ($url == "audio") { $result = $vk->query("audio.get", array()); foreach ($result->response as $key => $value) { $ret[] = Item(str_replace("https://", "http://", $value->url), substr($value->artist . " - " . $value->title, 0, 100) . ".mp3"); } return $ret; } //Аудиозаписи - рекомендации if ($url == "audio_rec") { $result = $vk->query("audio.getRecommendations", array()); foreach ($result->response as $key => $value) { $ret[] = Item(str_replace("https://", "http://", $value->url), substr($value->artist . " - " . $value->title, 0, 100) . ".mp3"); } return $ret; } //Видеозаписи -> выбор качества if (substr($url, 0, 10) == "video_view") { $result = $vk->query("video.get", array("videos" => substr($url, 14, strlen($url)))); foreach ($result->response[1]->files as $key => $value) { $ret[] = Item(str_replace("https://", "http://", $value), $key . " - " . $result->response[1]->title); } return $ret; } //Видеозаписи if ($url == "video") { $result = $vk->query("video.get", array()); foreach ($result->response as $key => $value) { if ($key != 0 && @(!$value->files->external)) { $ret[] = Container("url=video_view/id=" . $value->owner_id . "_" . $value->vid, $value->title, ""); } } return $ret; } }
public function getKey($key) { $handler = VkApi::getCaptchaHandler(); $result = false; if ($handler) { $result = $handler->getCaptchaKey($this); } return $result; }
public function execute($depth = 0) { $vkResult = new VkResult(); if ($depth >= $this->attempts) { $vkResult->is_request_error = true; return $vkResult; } if (!$this->params->existsParam("v")) { $this->params->set("v", $this->version); } if ($this->access_token instanceof VkAccessToken) { if (!$this->params->existsParam("access_token")) { $this->params->set("access_token", $this->access_token->getToken()); } } $builder = new RequestBuilder($this->method, $this->params); $requestStr = $builder->build(); $response = $this->http_client->post($requestStr, $this->params->getParams()); $jsonArray = json_decode($response, true); if (json_last_error() != JSON_ERROR_NONE) { $vkResult = $this->execute($depth + 1); } else { if (array_key_exists("response", $jsonArray)) { $vkResponse = new VkResponse($jsonArray['response']); $vkResult->is_success = true; $vkResult->response = $vkResponse; if ($this->success_listener) { $listener = $this->success_listener; $listener($vkResponse); } } else { if (array_key_exists("error", $jsonArray)) { if ($jsonArray['error']['error_code'] == 14) { $captcha = new VkCaptcha($jsonArray['error']['captcha_sid'], $jsonArray['error']['captcha_img']); $key = $captcha->getKey(); if ($key) { $this->params->set("captcha_sid", $captcha->getSid()); $this->params->set("captcha_key", $key); return $this->execute($depth + 1); } } $vkError = new VkError($jsonArray['error']); VkApi::setLastError($vkError); $vkResult->is_error = true; $vkResult->error = $vkError; if ($this->vk_error_listener) { $listener = $this->vk_error_listener; $listener($vkError); } } } } return $vkResult; }
// ]); $data = ['photo' => $photo, 'server' => $server, 'hash' => $hash, 'group_id' => $this->groupId * -1]; $result = $this->callApi('photos.saveWallPhoto', $data, 'post'); return $result; } public function post($publishDate, $photos) { $data = ['owner_id' => $this->groupId, 'message' => $this->post['text'], 'attachments' => implode(',', $photos), 'publish_date' => $publishDate]; $result = $this->callApi('wall.post', $data, 'post'); return $result; } public function getPhotosByResponse($response) { $photos = []; foreach ($response['response'] as $key => $photo) { $photos[] = $photo['id']; } return $photos; } } if (isset($_REQUEST['group_id']) && isset($_REQUEST['publish_date'])) { $vk = new VkApi($_COOKIE['vk-token'], $_REQUEST['group_id'], $_COOKIE['vk-user-id']); $vk->setPost($_REQUEST['post']); $result = $vk->curlPost(); // PR($result); // die(); //$photosResponse = $vk->saveWallPhoto($result['photo'], $result['server'], $result['hash']); $resPost = $vk->post($_REQUEST['publish_date'], $vk->getPhotosByResponse($result)); echo json_encode($resPost); die; }
<?php //Подключаем класс require 'vkapi.class.php'; //Создаем объект $vk = new VkApi('NUMBER APP', 'SECRET KEY', 'REDIRECT URI'); /* --------- Логинемся ---------- */ //Если нет ни в сессии не в GET, то пусть логинится if (empty($_SESSION['token']) && empty($_GET['code'])) { header('Location: ' . $vk->goAuth()); exit; } //Если нет в сессии,но ЕСТЬ GET['code'], то получаем токен if (empty($_SESSION['token']) && isset($_GET['code'])) { $resp = $vk->getToken($_GET['code']); if (isset($resp['error'])) { echo 'Error: ' . $resp['error_description']; //Если ошибка, выводим описание ошибки } elseif (isset($resp['access_token'])) { echo 'Success: ' . $resp['access_token']; //Если все ок, выводим токен и сейвим его в сессию $_SESSION['token'] = $resp['access_token']; } } /* --------- К примеру добавить трек ---------- */ $params = array('audio_id' => '23260363', 'owner_id' => '90522656'); $resp = $vk->goMethod('audio.add', $params, $_SESSION['token']); echo 'Добавлена: audio' . $params['audio_id'] . '_' . $params['owner_id'] . '<br/>'; /* ------------------- */
<?php session_start(); require_once $_SERVER['DOCUMENT_ROOT'] . '/core/debug.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/core/data.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/core/db.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/core/html.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/core/vk.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/core/accesscontrol.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/core/config.php'; Debug::DebugControl(); // Управление режимом отладки Debug::Checkpoint(); // Запуск таймера отладки Debug::Addlog('HTML::' . $pageName, $_SERVER['SCRIPT_URI']); // Первая строка в журнале логов VkApi::UserAuthWidget(); // Авторизация виджетом $accessRights = AccessControl::AccessCheck(); // Контроль доступа к контенту Html::Header($pageName, $pageVersion); Html::MenuLeft(); Html::ContentPage($contentPage); Html::Footer(); die;
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; } }