Закрыть
npm

Сессия VK Редактировано: 28.08.2020 в 04:45

После авторизации пользователя или группы, Easy VK создает для Вас сессию, в которую передает некоторые параметры. Так, например, при авторизации пользователя стандартный вид сессии выглядит таким образом:

Класс: easyvk.class.EasyVKSession

Пользовательская сессия после авторизации

EasyVKSession {
  access_token: ...,
  first_name: ..., // Имя
  last_name: ..., // Фамилия
  user_id: ...,
  username: ... // Логин для входа в аккаунт (только для корректной авто-смены сессий)
}

Вы можете использовать эти параметры после авторизации

easyvk({
  access_token: "токен_пользователя"
}).then(vk => {
  
  console.log(vk.session.user_id);

})

Для группы же, будет выглядеть так:

Сессия группы после авторизации

EasyVKSession {
  access_token: ...,
  group_name: ..., // Название группы
  screen_name: ..., // URL имя группы
  group_id: ...
}

Как видно, объект сессии для группы и для пользователя один и тот же, но его содержимое в первозданном виде - различное. Это важно понимать.

При авторизации Вы можете указать дополнительные параметры, которые хотите сохранить в сессию после авторизации. Так, например, можно сохранить ссылку на аватарку photo_200 пользователя, чтобы дальше использовать ее в своей программе без дополнительных обращений к API ВКонтакте. Для того, чтобы это сделать, воспользуйтесь параметром fields[]

Ниже описаны методы объекта EasyVKSession

session.save()

Метод сохраняет сессию в указанный файл.

vk.save().then(() => {
  console.log('Сессия сохранена успешно!');
})

session.setPath()

Метод устанавливает путь к файлу сессии, тут происходит указание файла.
Я не рекомендую менять свойство path для установки пути к файлу, так как Вы можете упустить некоторые внутренние моменты синхронизации Easy VK.

const path = require('path')
const sessionPath = path.join(__dirname, '.current-session')


vk.session.setPath(sessionPath)
.then(({vk: EasyVK}) => {

  console.log(EasyVK.session.path) // Путь к файлу сессии

})

session.clear()

Метод отчищает сессию и сохраняет ее в файл

vk.session.data = []
vk.session.clear(() => {
  console.log(vk.session) // {data: undefined}
})

Метод использования

Вы можете использовать сессию не только для того, чтобы сохранять данные пользователя на время, но и, чтобы меняться этими данными между программами. Поскольку я использую Easy VK всегда, когда пишу приложения API ВКонтакте под Node.js, я сталкивался с ситуациями, когда сессию надо было менять в одной программе сразу несколько раз, таким образом я сохранял работоспособность одной программы, не перезапуская постоянно алгоритм авторизации. Кроме того, в Easy VK изначально сессия предназначена для того, чтобы не авторизовать по логину и паролю много раз, а сделать это единожды.