Neutron Polarization Manipulator
    Have ideas to improve npm?Join in the discussion! »

    vkapi

    1.0.0 • Public • Published

    nodejs-vksdk

    Простой SDK для выполнения запросов к API социальной сети «ВКонтакте».

    Установка

    Просто скопируйте файл vksdk.js в свой проект и подключите.

    var VK = require('./vksdk.js');

    Настройка

    Поддерживается два способа авторизации и отправки запросов.

    • sig (через подпись, по http) (http://vk.com/developers.php?oid=-1&p=%D0%92%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B5_%D1%81_API_%D0%B1%D0%B5%D0%B7_HTTPS)
    • oauth, через https (http://vk.com/developers.php?oid=-1&p=%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2_%D0%BA_API)

    SDK предоставляет оба способа, можно выбрать при инициализации.

    var vk = new VK({
        'appID'     : 2807970,
        'appSecret' : 'L1ZKpgQPalJdumI6vFK',
        'mode'      : 'oauth'
    });
    var vk = new VK({
        'appID'     : 2807970,
        'appSecret' : 'L1ZKpgQPalJdumI6vFK',
        'mode'      : 'sig'
    });

    При необходимости режим выполнения запросов меняется в любой момент:

    vk.changeMode('oauth');

    или

    vk.changeMode('sig');

    Авторизация через sig

    Специальная авторизация не требуется, достаточно appID и appSecret

    Авторизация через oauth

    Для выполнения запросов нужен токен.

    Можно заставить SDK автоматически запросить токен. Полученный токен — это авторизация сервера приложений. С ним можно выполнять некоторые операции, не касающиеся пользовательских данных. Например, secure.getAppBalance или secure.sendNotification.

    Поскольку токен генерируется не сразу, нужно подождать события.

    • appServerTokenReady — событие успешно полученного токена
    • appServerTokenNotReady — ошибка запроса токена
    vk.setToken();
    vk.on('appServerTokenReady', function() {
        vk.request('secure.getAppBalance');
        // и так далее...
    });
    vk.on('appServerTokenNotReady', function(_error) {
        // обрабатываем ошибку установки токена
    });

    Можно получить токен через код, отправленный с фронт-енда. Про процесс авторизации и код написано здесь: http://vk.com/developers.php?oid=-1&p=Авторизация_сайтов В этом случае SDK возьмет код, обратится с ним к oauth И получит токен, с которым и будет выполнять запросы. Получение токена тоже занимает время, поэтому нужно подождать событий. Это токен позволяет запрашивать данные пользователей.

    vk.setToken({ code : '0819c207b9933a' });
    vk.on('tokenByCodeReady', function() {
        vk.request('getProfiles', {'uids' : '29894'});
        // и так далее...
    });
    vk.on('tokenByCodeNotReady', function(_error) {
        // обрабатываем ошибку установки токена
    });

    Третий способ — задать токен напрямую. Токен можно получить с фронт-енда или использовать ранее полученный токен. Здесь дожидаться событий не нужно — токен задается сразу.

    vk.setToken( { token :'f1eebc4311e775b128183993ee16302ac036a67af30424238d1oo14d35dfa61896f172ee630b7034a' });
    vk.request('getProfiles', {'uids' : '29894'});
    vk.on('done:getProfiles', function(_o) {
        console.log(_o);
    });

    Запросы

    Запросы выполняются так:

    vk.request('getProfiles', {'uids' : '29894'});
    vk.on('done:getProfiles', function(_o) {
        console.log(_o);
    });

    Передаем в request название метода API и параметры. По готовности результата сгенерируется событие вида done:methodName. В этом примере запрашивается getProfiles, значит событие готовности — done:getProfiles.

    Бывает и так, что нужно выполнить несколько однотипных запросов. На каждый запрос можно назначить свое имя события (чтобы события не конфликтовали):

    vk.request('getProfiles', {'uids' : '29894'}, 'myEvent1');
    vk.on('myEvent1', function(_o) {
        console.log(_o);
    });
     
    vk.request('getProfiles', {'uids' : '1'}, 'myEvent2');
    vk.on('myEvent2', function(_o) {
        console.log(_o);
    });

    Мы назначили два события: myEvent1 и myEvent2. С первым придут данные для пользователя 29894, со вторым — пользователя 1.

    Системные события в SDK

    • tokenByCodeReady — получен токен по коду
    • tokenByCodeNotReady — ошибка получения токена по коду
    • appServerTokenReady — получен токен сервера приложений
    • appServerTokenNotReady — ошибка получения токена сервера приложений

    Полный список методов

    • setToken([params]) — установка токена через код, напрямую или запрос токена с сервера.
    • changeMode(string) — установка режима работы SDK (oauth или sig)
    • getToken() — получить текущий рабочий токен
    • request(methodName, methodParams, [eventName]) — выполнить запрос к методу API, используя параметры (и, возможно, указать кастомное событие)

    В SDK доступны все методы из events.EventEmitter (http://nodejs.org/api/events.html)

    Поддержка

    Keywords

    none

    Install

    npm i vkapi

    DownloadsWeekly Downloads

    1

    Version

    1.0.0

    License

    BSD-2-Clause

    Last publish

    Collaborators

    • avatar