Vk api php подключение

Не получается вникнуть в суть. Сегодня первый раз в жизни с 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

dimastik1986

Вот рабочий вариант, проблема была в том, что нельзя использовать классы, которые находятся не в одном пространстве имён с текущим сценарием.

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 комментариев

dimastik1986

Вроде как все сделал как вы сказали, проверил актуальность 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.

dimastik1986

antoo, я не менял, я просто показал где лежит, а константа на месте.
в общем, методом научного тыка перестала ошибку кидать на $vk = new VKClientVKApiClient(‘5.92’);
но какой бы адрес я не прописывал для

ругается на

Class ‘VKOAuthDisplay’ not found

Митя ТоДаСё, https://github.com/VKCOM/vk-php-sdk/blob/4d270e1c0. — он на месте.
Какая версия PHP? Вы точно через composer ставите, а не просто файлы копируете?

dimastik1986

  • версия PHP на сервере 7.2
  • устанавливаю командой

composer-php7.2 require vkcom/vk-php-sdk

5c0c0e935daeb811851449.jpeg

  • где что лежит, прикладываю скрином к сообщению, получается файлы сайта, на уровень назад — pablic_html, перед ним папка сайта, и в самом начале корень, в котором лежит .local в котором установлен composer
  • может быть я не туда установил или еще где накосячил?

    Митя ТоДаСё, `composer-php7.2` — довольно странная команда, каким образом вы её выполняете и где? Что выводит в ответ?
    Папка vk-php-sdk должна быть в vendor, но она должна сама там создаться (не руками), каким образом она появилась в корне — непонятно, можете удалять оттуда.

    dimastik1986

    antoo, это мне посоветовала служба поддержки.
    я руками ничего не трогал )) я прекрасно понимаю, что вся суть этой затей — автоматическая установка, а не в ручную файлы заливать.
    может мне удалить composer и sdk и по новой все сделать, находясь в тех папках, которые вы порекомендуете? как правильно удалить?

    Источник: qna.habr.com

    класс для работы vkontakte api, php

    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

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...