vkTools [1.0.0-beta]

Всем доброго дня. У меня постоянно возникают задачи работы с VK Api и из проекта в проект это одни и те же куски кода. Надоело так жить!) Поэтому сегодня я вам представляю небольшой компонент для работы с VK Api.

По сути это небольшая библиотека-обертка над VK.
Подключаем через getService.
$vkPath = MODX_CORE_PATH . 'components/vktools/model/';
$modx->getService('vk', 'vktools.vkTools', $vkPath);

Список реализованных методов на текущий момент:
  • getAuthUrl($scope = '', $html = false, $display = 'page', $callback_url = 'https://api.vk.com/blank.html') — генерация ссылки на получение токена (только для standalone приложений)
  • uploadFile($server, $file) — метод для загрузки файла
  • api($method, $params=array()) — запрос любого метода VK api
  • setSessionAccessToken($access_token) — установка токена в сессию
  • removeSessionAccessToken() — удаление токена из сессии
4 системных настройки:
  • vktools_access_token — базовый токен (используется при выключенной настройке токенов в сессии)
  • vktools_app_id — app_id приложения VK
  • vktools_app_secret — app_secret приложения VK
  • vktools_session_token_mode — разрешать ли хранение токена в сессии (по умолчанию false)
Плагин для записи в сессию значений токена — работает на событие OnMODXInit, ловит $_REQUEST['access_token'] и $_REQUEST['vktools_action'].

Сниппет с примерами в комплекте :)

<?php
$vkPath = MODX_CORE_PATH . 'components/vktools/model/';
$modx->getService('vk', 'vktools.vkTools', $vkPath);
echo $modx->vk->getAuthUrl('messages,wall,photos,offline', true);
print_r($modx->vk->api('users.get', array()));

Компонент на github.
Компонент в modstore.pro
Лев Вербицкий
11 апреля 2016, 12:26
modx.pro
3
4 369
+10

Комментарии: 10

Паша
11 апреля 2016, 16:47
+1
какой ты добрый сегодня Лев )
      Рустам С
      14 апреля 2016, 11:53
      0
      круто спасибо, а его можно использовать совместно с hybridauth?
        Лев Вербицкий
        14 апреля 2016, 15:20
        0
        Думаю что да, если словить токен при авторизации через hybrid и передать в сессию) Но понятно, что далеко не все методы будут работать, а только те, которые разрешены scope.
          Рустам С
          14 апреля 2016, 17:01
          0
          отлично) предлагаю это реализовать)
          а выбор scope через опции или как-то по другому
            Лев Вербицкий
            14 апреля 2016, 17:22
            0
            Не, тут реализовывать не буду, смысла нету. Это обертка все-таки, плюс авторизация через гибридаус по scope мало требует, только профиль помоему и все.
        Виталий Барышников
        04 июня 2016, 07:46
        0
        Привет, не подскажешь как фотки дёрнуть по https (app_id, secret и access_token в настройки ввёл)
        вызываю:

        $photosObj = $modx->vk->api('photos.get', array(
            'album_id' => '*****184',
            'owner_id' => '*****71',
            'count' => $limit,
            'photo_sizes' => '1'))[response];
        Прилетают http.
          Никита
          24 января 2018, 11:14
          0
          Вот что я никак не могу понять — почему серверные запросы к API не требуют авторизации, а javascript Open API с клиента обязательно требует аутентификации пользователя. Даже если тебе нужно забрать данные, доступные всему интернету. Меня как front-endера эта политика разочаровывает.
          Всего у меня 2 проекта, в котором нужен vk api — в первом отделался лёгким испугом — написал топорный сниппет без параметров, всего то забрать отзывы и немного данных о каждом юзере. Но со вторым я бы так легко не отделался — через vk api заполняется добрая половина ресурса. Плагин оказался полезен, хотя кнеш требует доработки — всё равно метод в сниппете приходится писать и сниппет уже вызывать в чанке. Топорно, но выбирать не приходится. Ссылка на github в modstore оказалась битой, хотел посмотреть код, додумать универсальность до [[vkapi? &method=`users.get` &=user_id=`xxxxxxxx` &fields=`photo_100`&tpl=`wrapperChunk`]] к примеру. Было бы идеально. Ув автор, спасибо за плагин, найс. Актуализируй, пж, ссылку на github репозиторий
            Лев Вербицкий
            24 января 2018, 11:40
            0
            Почему не требуют? Требуют. Там есть буквально несколько методов, которые без авторизации нынче доступны. Написать такой сниппет то вообще не проблема, там 20 строк кода будет. У меня исходники не уверен, что есть. Надо искать =(
            Леонид
            02 марта 2019, 18:46
            0
            Приветствую, а есть примеры реализации на страницу, допустим сообщений из топика?
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              10