Библиотека для работы с API ВКонтакте.
npm i sedlab/node-vk-api#latest или yarn add sedlab/node-vk-api#latest
ES6
import { OAuth, Request } from "node-vk-api";ES5
const { OAuth, Request } = require("node-vk-api");Прямая авторизация — это авторизация по логину и паролю. Такой тип авторизации доступен маленькому кругу приложений, чаще всего это официальные приложения ВКонтакте.
При использовании прямой авторизации вы можете получить токен с полным доступом к аккаунту.
Авторизация:
import { OAuth } from "node-vk-api";
// В библиотеке используется id и секретный ключ от android официального клиента VK с получением всех прав.
// Значения можно поменять указав все необходимые поля: new OAuth("5.131", "https://api.vk.com/method/", "all", "2274003", "hHbZxrka2uZ6jB1inYsH");
const oauth = new OAuth();
const username = "";
const password = "";
oauth.login(username, password)
.then((data) => {
console.log({ data });
})
.catch((error) => {
console.error({ error });
});2FA:
import { OAuth } from "node-vk-api";
const oauth = new OAuth();
// Если настроена двухфакторная аутентификация, то необходимо будет пройти еще одну проверку.
// Отправка кода подтверждения на номер телефона.
const sid = ""; // Параметр "validation_sid" из ошибки.
oauth.validatePhone(sid)
.then((data) => {
console.log({ data });
})
.catch((error) => {
console.error({ error });
});
// После получения кода необходимо переотправить первый запрос с параметром "code".
const code = ""; // Код полученый из SMS.
oauth.login(username, password, code)
.then((data) => {
console.log({ data });
})
.catch((error) => {
console.error({ error });
});Обработка капчи:
import { OAuth } from "node-vk-api";
const oauth = new OAuth();
// Отправка решения капчи.
const captchaSid = "";
const captchaKey = "";
oauth.login(username, password, undefined, captchaSid, captchaKey)
.then((data) => {
console.log({ data });
})
.catch((error) => {
console.error({ error });
});Для долгосрочной поддержки и простоты использования можно использовать любые методы api, включая незадокументированные на https://dev.vk.com/method.
Пример:
import { Request } from "node-vk-api";
const TOKEN = ""; // Параметр "access_token".
// Помимо токена можно передавать другие поля:
// new Request("TOKEN", "5.131", "https://api.vk.com/method/", "VKAndroidApp/8.17-15401 (Android 7.1.2; SDK 25; armeabi-v7a; google G011A; zh; 1280x720)");
const vk = new Request(TOKEN);
// Возвращает найденные аудиозаписи.
vk.request("audio.search", { q: "Надо ли — ЕГОР КРИД", count: 1 })
.then((data) => {
console.log("audio.search");
console.log({ data });
})
.catch((error) => {
console.error("audio.search");
console.error({ error });
});