EasyVK Редактировано: 28.08.2020 в 04:16

В этом разделе подробно описана авторизация, а также история создания EasyVK


Авторизация (инициализация)

В EasyVK, когда вы импторируете себе модуль командой require, возвращается функция, выполнив которую вам будет необходимо иницализировать сессию EasyVK.
Попроще говоря, это просто запуск алгоритма авторизации вас по токену / паролю пользователя / группы.

Выглядит это примерно так

const easyvk = require('easyvk')

easyvk({
  access_token: '{ВАШ_ТОКЕН}'
}).then(vk => {

}).catch(console.error) ~/Project/index.js

Именно тут вы даете понять, как авторизовать вас, чтобы вы дальше делали какие-то действия. Возвращается объект Promise, передается в resolve функцию объект EasyVK (именнуемый переменной vk, для удобства).

Обращаясь к методам этого объекта, будет гарантированно, что все запроы будут выполняться по тому токену, который вы поставили в нициализации функции. Если вы не ставили токен, лишь выбрали авторизацию по логину и паролю, то токен EasyVK получит самостоятельно с максимальными правами для комфортной работы.

Ниже вы можете посмотреть какие параметры можно передать в иницализацию функции. Напомню, что функция принимает единственный аргумент - объект инициализации, настройки вашей сессии, по факту.

//Стандартный вид инициализации
//По такому шаблону происходт все взаимодействия

const easyvk = require('easyvk')

//Сессия EasyVK, настройки
const sessionParams = {
  access_token: 'token',
  api_v: '5.73' 
}

//Функция, в которую передается объект EasyVK
const vkInit = (vk) => {
  // пример, vk.call()
}

easyvk(sessionParams)
.then(vkInit)
.catch(console.error) ~/Project/index.js

Параметры иницизалиации

Параметр Описание По умолчанию
api_v Версия ВКонтакте API, которую вы хотите использовать для всех запросов.
Не рекомендую менять этот параметр ниже версии 5, так как сама библиотека писалась именно под нее,
в версии 4 JSON ответы могут отличаться от версии 5.
easyvk({
  api_v: 5.73,
  // Или
  api_v: '5.73'    
}) ~/Project/index.js 
5.73
acсess_token Ваш токен доступа, параметр необходим только, если вы не ввели
логин и пароль. Токен может быть как группы, так и пользователя.
Библиотека самостоятельно определит какой именно это токен,
если он будет не правильным, выведется ошибка с ответом сервера ВКонтатке.
easyvk({
  access_token: 'ac56jklopas45dnbmwaahjklqfs671wd....'
}) ~/Project/index.js
-
username Ваш логин для аккаунта, используется в связке с параметром password -
password Ваш пароль для аккаунта, используется в связке с параметром username
easyvk({
  username: 89158888888,
  password: 'qwerty', //Пример для телефона

  // Или
  username: 'example@mail.ru',
  password: 12345678,
})

 ~/Project/index.js
-
session_file Путь к файлу сессии, в который будет сохраняться вся сессия.
const path = require('path')
const sessionPath = path.join(__dirname, '.session-vk')

easyvk({
  session_file: sessionPath
}) ~/Project/index.js

Тем временем в самом файле
{
  "access_token": "68837af82bc....",
  "group_id": 5,
  "group_name": "Бот Программист",
  "group_screen": "bot_prog",
  "user_id": false
} ~/Project/.session-vk
~/Project/
node_modules/
easyvk/lib/
.vksession
save_session Сохранять сессию в файл? true
reauth Игнорировать данные файла сессии и авторизоваться с новыми данными? false
clean_session Отчистить файл сессии после авторизации? false
captcha_sid ID капчи, которую вы получаете из ошибки. Необходимо передать этот
параметр после получения ошибки. Если вы не ловите ошибки капчи через
captchaHandler, то тогда необходимо переинициализировать EasyVK с новыми
данными, чтобы EasyVK мог выполнять запрос дальше. То есть. Если вы получили
ошибку капчи, вы можете ее ловить через хендлер, но если по каким-то
причинам это не получилось, вы можете передать из ошибки данные в этот
параметр, EasyVK будет встраивать их во все запросы в ходе работы.
-
captcha_key Текст с капчи, которую вы получили в ошибке. Ваши дейтсвия:
1. Инициализировать первый раз
2. Получить ошибку капчи, вывести ее куда-нибудь в лог, чтобы посмотреть саму капчу и решить ее.
3. Открыть картинку капчи, посмотреть текст
4. Запустить EasyVK с заданными параметрами captcha_sid и captcha_key.
Или используйте captchaHandler для решения капчи самостоятельно и автоматически.
-
code Ваш код для двухфакторной авторизации. Если вы используете двухфакторную авторизацию для своего аккаунта, неободимо вписать в этот параметр код для авторизации. code
captchaHandlder Функция для ловли ошибки капчи. Вы можете решать капчу любым удобным вам способом.
Пример смотрите на странице Капча
-

После того, как вы авторизовались, вызывается функция resolve, в нее передается объект EasyVK, с помощью которого вы можете обращаться к ВКонтакте API. Подробнее читайте на странице Методы

Ловля ошибок

В EasyVK пока что не сильно развит режим Debug'а, но то, что уже есть сейчас, несомненно, работает так, как надо. И так, все основные дейтствия, которые производятся в объекте EasyVK происсходят на основе Promis'ов. Следовательно, можно ловить ошибки, но не везде.
Я рекомендую использовать событие unhandledRejection, чтобы ловить все ошибки без исключений и знать, что происходит в том или ином месте кода.

process.on('unhandledRejection', console.error)

Но в основном все сводится к ловле ошибок на уровне промисов

easyvk({})
.then(vk => {})
.catch(console.error)

process.on('unhandledRejection', console.error)

История

ОСТОРОЖНО ! Многобукаф !!

EasyVK создавался просто так. EasyVK - это мое хобби, можно так сказать, но которым я не сильно увлечен по разным причинам. Модуль создавался, потому что я не видел на тот момент, когда понял, что нужно что-то делать, я не увидел модулей, которые бы были похоже на то, что из себя представляет сейчас EasyVK. Модуль не сильно полезный, на самом деле. Но кому-то он может сильно помочь. Сначала я создавал его для себя, как это обычно бывает со всеми проектами, а потом решил, а почему бы и не опубликовать его? Так и появился EasyVK.

С первой версии EasyVK обладал малым количеством возможностей, было много багов и прочего. Во второй версии я решил переписать все с нуля, ведь то, что было, нельзя было считать расширяемым проектом. И даже во второй верии не вышло то, что я хотел. Появилась версия 0.3, в которой появились утилиты, много дополнений. Я реализовал почти все возможности. Но все же, знал, что это не все.

После версии 0.3, я начал писать версию 0.4, думал, что это ведь еще не релиз 1.0, чего там, ведь много чего еще можно сделать. Но к концу уже понял, что дело катит на релиз 1.0 версии. Вот и вся история проекта. Сейчас проект уже плывет по течению, я лишь помогаю людям, у которых возникают какие либо проблемы с использованием. Но на данный момент не собираюсь развивать его дальше. Только по мере поступления новых задач, вроде "ВКонтакте запустили масштабную Бот Платформу с доступным API".

FAQ

Данный раздел будет пополняться по мере поступления вопросов.