Не получается вникнуть в суть. Сегодня первый раз в жизни с git установил что-то на сайт через терминал. Решил полюбопытствовать как устроена VK api SDK, но даже подключить не получилось )))) Не пойму, уже кучу вариантов попробовал, не получается запустить.
require __DIR__.’/vendor/autoload.php’; $vk = new VKClientVKApiClient(‘5.92’); $oauth = new VKOAuthVKOAuth(); $client_id = API_CLIENT_ID; $redirect_uri = ‘http://site.ru/index.php’; $display = VKOAuthDisplay::PAGE; $scope = array(VKOAuthUserScope::WALL, VKOAuthUserScope::GROUPS); $state = ‘secret_state_code’; $browser_url = $oauth->getAuthorizeUrl(VKOAuthResponseType::CODE, $client_id, $redirect_uri, $display, $scope, $state);
Fatal error: Uncaught Error: Class ‘VKOAuthDisplay’ not found
Отслеживать
задан 8 дек 2018 в 17:44
430 2 2 золотых знака 9 9 серебряных знаков 28 28 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Причины в том, что Вы пытаетесь использовать классы, которые находятся не в одном пространстве имён с текущим сценарием. Используйте use , либо пишите все пути полностью, например:
PHP Web авторизация VK API
$display = VKOAuthVKOAuthDisplay::PAGE;
Этот самый путь можно узнать в самом классе, который вызывается. Он следует после слова namespace. Приведённый вариант подразумевает указание путей в начале класса при помощи use . Но можно указывать как в примере выше.
Источник: ru.stackoverflow.com
VK api SDK установка и подключение, как правильно?
Не получается вникнуть в суть. Сегодня первый раз в жизни с git установил что-то на сайт через терминал.
Решил полюбопытствовать как устроена VK api SDK, но даже подключить не получилось ))))
В сети инфы мало, в инструкции об этом ни слова.
В какую папку надо устанавливать SDK? в pablic_html?
Подключать я так понял можно autoload.php а дальше уже функциями, а подтянет нужные файлы он сам?
- Вопрос задан более трёх лет назад
- 3919 просмотров
Комментировать
Решения вопроса 1
Вот рабочий вариант, проблема была в том, что нельзя использовать классы, которые находятся не в одном пространстве имён с текущим сценарием.
require_once __DIR__.’/vendor/autoload.php’; use VKClientVKApiClient; use VKOAuthVKOAuth; use VKOAuthVKOAuthDisplay; use VKOAuthScopesVKOAuthUserScope; use VKOAuthVKOAuthResponseType; $vk = new VKApiClient(VER); $oauth = new VKOAuth(); $client_id = API_CLIENT_ID; $redirect_uri = REDIR; $display = VKOAuthDisplay::PAGE; $scope = array(VKOAuthUserScope::WALL, VKOAuthUserScope::GROUPS); $state = ‘secret_state_code’; $browser_url = $oauth->getAuthorizeUrl(VKOAuthResponseType::CODE, $client_id, $redirect_uri, $display, $scope, $state); print $browser_url;
Ответ написан более трёх лет назад
Нравится 2 1 комментарий
spoiler
Ответы на вопрос 1
Создание бота Вк на языке PHP за 40 минут / Уроки API Вконтакте
Пришло время открывать для себя чудесный мир пакетных менеджеров!
1. Для начала устанавливаем composer: https://getcomposer.org/doc/00-intro.md
2. Следуя инструкции (https://github.com/VKCOM/vk-php-sdk), в папке с проектом пишем: composer require vkcom/vk-php-sdk
3. У вас появятся файлы composer.json, composer.lock и папка vendor.
3. Создаём рядом с ними index.php и подключаем пакеты, установленные через composer:
Ответ написан более трёх лет назад
Нравится 1 7 комментариев
Вроде как все сделал как вы сказали, проверил актуальность id и тд?
Не работает (((
/public_html/vendor/autoload.php
$vk = new VKClientVKApiClient(); $oauth = new VKClientVKOAuth(); $client_id = API_CLIENT_ID; $redirect_uri = ‘http://site.ru/index.php’; $display = VKOAuthDisplay::PAGE; $scope = array(VKOAuthUserScope::WALL, VKOAuthUserScope::GROUPS); $state = ‘secret_state_code’; $browser_url = $oauth->getAuthorizeUrl(VKOAuthResponseType::CODE, $client_id, $redirect_uri, $display, $scope, $state);
HTTP ERROR 500
__DIR__ не надо менять на public_html, оставьте прямо так — это константа PHP, которая означает текущую папку. error_reporting желательно включить, чтобы видеть описание ошибки, а не просто 500.
antoo, я не менял, я просто показал где лежит, а константа на месте.
в общем, методом научного тыка перестала ошибку кидать на $vk = new VKClientVKApiClient(‘5.92’);
но какой бы адрес я не прописывал для
ругается на
Class ‘VKOAuthDisplay’ not found
Митя ТоДаСё, https://github.com/VKCOM/vk-php-sdk/blob/4d270e1c0. — он на месте.
Какая версия PHP? Вы точно через composer ставите, а не просто файлы копируете?
- версия PHP на сервере 7.2
- устанавливаю командой
composer-php7.2 require vkcom/vk-php-sdk
может быть я не туда установил или еще где накосячил?
Митя ТоДаСё, `composer-php7.2` — довольно странная команда, каким образом вы её выполняете и где? Что выводит в ответ?
Папка vk-php-sdk должна быть в vendor, но она должна сама там создаться (не руками), каким образом она появилась в корне — непонятно, можете удалять оттуда.
antoo, это мне посоветовала служба поддержки.
я руками ничего не трогал )) я прекрасно понимаю, что вся суть этой затей — автоматическая установка, а не в ручную файлы заливать.
может мне удалить composer и sdk и по новой все сделать, находясь в тех папках, которые вы порекомендуете? как правильно удалить?
Источник: qna.habr.com
класс для работы vkontakte api, php
думаю, не осталось людей, которые бы не знали про крупнейшую социальную сеть (да и вообще, топ-сайт) россии — vkontakte.ru. конечно было было бы странно, не предоставляй этот сайт api для взаимодействия с приложениями пользователей. естественно, api есть, и к слову говоря, он гораздо более вменяемый (и простой, да ещё и с русским описанием), нежели api одноклассников.
далее я приведу простейший класс для взаимодействия приложений (точнее, php скриптов) с сайтом vkontakte. ничего особо сложного нет, единственно что, потребуется добавить новое приложение, через которое и будет происходить взаимодействие с api vkontakte (как добавить приложение будет разобрано в следующей статье).
далее привожу код класса. работать с ним очень просто: достаточно один раз внести основные данные (id пользователя, id приложения, секрет), после чего вызвать метод get() с 2 параметрами: имя требуемого метода api vkontakte и массив параметров, вида array(‘name1’ => ‘value1’, ‘name2’ => ‘value2’). всё остальное будет сделано автоматически. для простоты также будет считаться, что результат возвращается в виде json-данных (для xml несложно внести переделку, но особых «фишек» это не даст). сам код (для последующего примера код нужно скопировать и сохранить в файл cvk_api.php):
/**
* Класс для работы с api vkontakte.ru
*/
class cvk_api /** Уникальный идентификатор пользователя (Номер страницы) */
const ID_MEMBER = ‘1’ ;
/** Уникальный идентификатор приложения (ID приложения) */
const ID_API = ‘2’ ;
/** «Секрет» приложения (Защищенный ключ) */
const SECRET = ‘3’ ;
/** url для запросов к API */
const API_URL = ‘http://api.vk.com/api.php’ ;
// формирование подписи
$sig = md5 ( $strdatas . self :: SECRET );
// полная строка запроса к API
$url = self :: API_URL . ‘?’ . implode ( ‘sig=’ . $sig ;
// получить результат
$result = file_get_contents ( $url );
if ( $result ) // удалить ненужные символы
$result = preg_replace ( ‘![\x00-\x1f]!’ , » , $result );
// преобразовать json-строку в массив
$arr = json_decode ( $result , 1 );
// при наличии ошибка
if (isset( $arr [ ‘error’ ])) < // записать её текст
self :: $error = ‘Ошибка: ‘ . $arr [ ‘error’ ][ ‘error_msg’ ] . ‘ (‘ . $arr [ ‘error’ ][ ‘error_code’ ] . ‘)’ ;
$arr = FALSE ;
>
> else $arr = FALSE ;
self :: $error = ‘Нет доступа к адресу ‘ . self :: API_URL ;
>
класс действительно получился очень простой. для общения с сервером может использовать любой из следующих адресов:
запрос на любой из url приводит к идентичным действиям. основные и дополнительные параметры должны передаваться с помощью метода GET или POST. вопроса что выбрать не стоит в принципе: для большинства случае вполне подойдёт GET. если адрес с GET-запросом получается слишком длинным, переходим на POST. для простоты можно считать, что GET будет хватать всегда (и пожалуй более, чем в 99% случаев, так оно и есть). сформировав запрос, отсылаем его по одному из адресов выше и получаем результат в виде XML или JSON. JSON чуть проще, но требует версию PHP 5.2 и выше. именно начиная с этой версии в php появилась функция распаковки json-данных.
для формирования запроса необходимы следующие данные:
- api_id — идентификатор приложения. присваивается каждому приложения при его создании;
- method — название метода, который требуется выполнить. это может быть audio.search, wall.get, video.get и ещё куча методов с этой страницы;
- необязательный параметр format может иметь значение JSON или XML (по умолчанию).
- sig — уникальная подпись. используется для проверки того, что запрос валидный. вычисляет как хеш md5 от сцепки следующих параметров:
- viewer_id — идентификатор пользователя (того самого, которому принадлежит данное приложение);
- пар param_name=param_value — все передаваемые переменные, расположенные по имени в алфавитном порядке
- api_secret — секрет приложения, уникальная строка, которая будет осложнять подбор корректных запросов на конкретное приложения. объяснение может быть непонятно, но достаточно знать, что это произвольная строка, известная только приложению vkontakte и скрипту, формирующему запросы (при желании её можно изменить. если была скомпрометирована, то изменить требуется обязательно).
в зависимости от запрашиваемого метода, ответ будет отличаться (что логично: к примеру, у картинки не должно быть значения длительности). при возникновении ошибки в ответе содержится элемент error. на первых порах (если писать указанный выше класс с нуля, либо некорректно ввести требуемые данные) наиболее частой ошибкой будет неверная подпись (сигнатура). если не предусмотереть искусственную задержу, то уже на рабочем варианте, при достаточно большом числе пользователей, будет появляться ошибка о превышении допустимого числа запросов (разрешается делать не более 3 запросов в секунду с уникальным id пользователя и id приложения).
пример кода для работы с данным классом:
header ( ‘Content-Type:text/plain;charset=utf-8’ );
// подключение класса для работы с API VKontakte
require ‘cvk_api.php’ ;
// массив с параметрами для запроса методов API
$params = array();
$params [ ‘q’ ] = ‘а+’ ;
$params [ ‘count’ ] = 10 ;
$params [ ‘format’ ] = ‘JSON’ ;
$params [ ‘test_mode’ ]= 1 ;
// вызов метода audio.search
$arr = cvk_api :: get ( ‘audio.search’ , $params );
if ( FALSE === $arr ) echo cvk_api :: $error ;
> else // вывод массива с полученными данными
print_r ( $arr );
>
Поддержка сайта
С удовольствием создаю годный контент. Буду очень признателен, если вы поддержите мои усилия:
Свежим хлебушком типа батон —>
днём интернета
шоколадкой для работы мозга
коробочкой ароматного чая для бодрости продлением домена —>
продлением хостинга на +1 месяц
Источник: a-panov.ru