@happysanta/vk-apps-sdk
Установка
npm i @happysanta/vk-apps-sdk
npm i @vkontakte/vk-connect
import VkSdk from "@happysanta/vk-apps-sdk"
Методы
все методы VkSdk за исключением send возвращают ошибку типа VkSdkError, ее можон получить функцией castToError
- .api()
- .getStartParams()
- .subscribeEvent()
- .unsubscribeEvent()
- .getRequest()
- .init()
- .getUserInfo()
- .getPhoneNumber()
- .getEmail()
- .getGeodata()
- .openContacts()
- .getAuthToken()
- .callAPIMethod()
- .share()
- .showWallPostBox()
- .getClientVersion()
- .openPayForm()
- .allowNotifications()
- .denyNotifications()
- .setLocation()
- .allowMessagesFromGroup()
- .joinGroup()
- .openQR()
- .openApp()
- .setViewSettings()
- .scroll()
- .resizeWindow()
- .getPersonalCard()
api
Вызов метода vk api с запросом прав на токен.
Этот метод сам запросит права через getAuthToken с указаным scope и перезапросит токен если ip поменяется
в случае ошибок вернет объект ошибку типа VkSdkError
с полями
-
message
string -
code
number код ошибки -
type
string одна из константVkSdkError.UNKNOWN_TYPE|VkSdkError.CLIENT_ERROR|VkSdkError.API_ERROR|VkSdkError.NETWORK_ERROR|VkSdkError.ACCESS_ERROR
Запрос может быть отправлен повторно если апи вк вернет один из следующих кодов
- 1 VK_API_UNKNOWN_ERROR, //Произошла неизвестная ошибка.
- 6 VK_API_TOO_MANY_REQUEST, //Слишком много запросов в секунду.
- 9 VK_API_TOO_MANY_SAME_ACTIONS, //Слишком много однотипных действий.
Чобы отключить это поведение передайте retry
аргумент равный 0
Приимер использования с обработкой ошибок
/**
* Вызов методов API с запросов токена если нужно
* Позволяет получить результат вызова метода API ВКонтакте.
* @param {string} method - название метода API. {@url https://vk.com/dev/methods}
* @param {Object} params - параметры метода в виде JSON
* @param {string|null} scope - права необходимые для этого запроса, через запятую
* @param {Number} retry - допустимое количество повторов которое можно сделать если с первого раза не получится
* @throws VkSdkError
* @returns {Promise<Object>}
*/
VkSdk.api("users.get", {}, "friends")
.then(({response}) => {
})
.catch(e => {
switch (e.type) {
case VkSdkError.NETWORK_ERROR:
return this.setState({
error: "Ошибка сети"
})
case VkSdkError.ACCESS_ERROR:
return this.setState({
error: "Не выдан достп или вы отредактировали доступы"
})
case VkSdkError.API_ERROR:
return this.setState({
error: "Ошибка апи: "+e.message +' '+e.code
})
/// Следующие типы ошибок никогда не должны быть показаны, но теоритически возможны
case VkSdkError.CLIENT_ERROR:
return this.setState({
error: "Не известная ошибка от вк коннект: "+e.message +' '+e.code
})
case VkSdkError.UNKNOWN_TYPE:
return this.setState({
error: "Не известная ошибка от неисзвестно чего: "+e.message +' '+e.code
})
default:
return this.setState({
error: "Супер неизвестная ошибка"
})
}
})
getStartParams
Возвращает объект с параметрами запуска приложения
VkSdk.getStartParams()
init
Инициализация VK Connect
Первое событие, которое Ваше приложение должно отправить официальному приложению, чтобы начать работу с VK Connect.
В противном случае сервис может не работать на мобильных клиентах iOS и Android.
VkSdk.init()
subscribeevent
Подписаться на соббытие VkConnect @param {string} event - Тип события VkConnect @param {function} callback - колбек
VkSdk.subscribeEvent(event, callback)
unsubscribeevent
Отписаться от соббытия VkConnect @param {string} event - Тип события VkConnect @param {function} callback - колбек
VkSdk.unsubscribeEvent(event, callback)
getrequest
Возвращает объект для запроса в VkConnect @param command - Команда в VkConnect @param params - параметры запроса @param successEvent - колбек при успешном выполнении @param failEvent - колбек при неуспешном выполнении @returns {VkConnectRequest}
VkSdk.getRequest(command, params, successEvent, failEvent)
getUserInfo
Получение данных профиля
Позволяет получить основные данные о профиле текущего пользователя.
@returns {Promise}
VkSdk.getUserInfo()
getPhoneNumber
Получение номера телефона
позволяет получить номер телефона текущего пользователя.
Официальное приложение отображает экран с запросом разрешения пользователя на передачу его номера телефона в приложение.
@returns {Promise}
VkSdk.getPhoneNumber()
getEmail
Получение e-mail
Позволяет получить адрес электронной почты пользователя.
После вызова отображает экран с запросом прав на доступ к e-mail.
@returns {Promise}
VkSdk.getEmail()
getGeodata
Получение геопозиции
Позволяет получить данные о геопозиции пользователя. Событие не принимает параметров.
Официальное приложение показывает окно с запросом разрешения на передачу местоположения.
@returns {Promise}
VkSdk.getGeodata()
openContacts
Выбор контакта из телефонной книги
Открывает окно выбора контактов из телефонной книги на устройстве пользователя.
@returns {Promise}
VkSdk.openContacts()
getAuthToken
Авторизация пользователя
Позволяет запросить права доступа у пользователя и получить ключ для работы с API.
Для получения токена без дополнительных прав передайте в параметре пустую строку.
@param {string} scope - Список прав доступа, перечисленных через запятую. Список прав
@returns {Promise}
VkSdk.getAuthToken(scope)
callAPIMethod
Вызов методов API
Позволяет получить результат вызова метода API ВКонтакте.
Обратите внимание, что для работы с API нужно передать ключ доступа пользователя с соответствующими правами,
полученный с помощью VKWebAppGetAuthToken
@param {string} method - название метода API. Список методов
@param {Object} params - параметры метода в виде JSON
@param {string} requestId - произвольная строка, которая вернётся вместе с результатом запроса.
Используйте requestId для отслеживания уникальности запросов.
@returns {Promise}
VkSdk.callAPIMethod(method, params, requestId)
share
Вызов диалога Share
Позволяет поделиться ссылкой
@returns {Promise}
VkSdk.share(link)
showWallPostBox
Публикация записей на стене
@param {Object} params - См. описание метода wall.post
Позволяет пользователю опубликовать запись на стене
@returns {Promise}
VkSdk.showWallPostBox(params)
getClientVersion
Получение версии официального приложения
Возвращает номер версии официального приложения ВКонтакте.
@returns {Promise}
VkSdk.getClientVersion()
openPayForm
Платёж VK Pay
Поднимает экран VK Pay для платежа
@param {string} action - pay-to-service|pay-to-user|pay-to-group
@param {Object} params - параметры платёжной формы VK Pay
@returns {Promise}
VkSdk.openPayForm(action, params)
allowNotifications
Включение уведомлений
Позволяет запросить у пользователя разрешение на отправку уведомлений от приложения.
@returns {Promise}
VkSdk.allowNotifications()
denyNotifications
Выключение уведомлений
Позволяет отключить уведомления от приложения.
@returns {Promise}
VkSdk.denyNotifications()
setLocation
Установка хэша
Позволяет установить новое значение хэша
@returns {Promise}
VkSdk.setLocation(location)
allowMessagesFromGroup
Подписка на сообщения сообщества
Позволяет запросить у пользователя разрешение на отправку сообщений от имени сообщества.
@param {int} groupId - идентификатор сообщества
@param {string} key - произвольная строка. Этот параметр можно использовать для идентификации пользователя.
Его значение будет возвращено в событии message_allow Callback API.
@returns {Promise}
VkSdk.allowMessagesFromGroup(groupId, key)
joinGroup
Вступление в сообщество
Позволяет пользователю вступить в сообщество.
@param {int} groupId - идентификатор сообщества
@returns {Promise}
VkSdk.joinGroup(groupId)
openQR
Сканирование QR-кода
Позволяет открыть камеру для считывания QR-кода и получить результат сканирования.
@returns {Promise}
VkSdk.openQR()
openApp
Открытие другого приложения
@param {int} appId - идентификатор приложения, которое должно быть открыто
@param {string} location - хэш, строка после # в URL вида https://vk.com/app123456#
@returns {Promise}
VkSdk.openApp(appId, location)
setViewSettings
Изменение внешнего вида клиента
Клиент устанавливает тему для иконок в статус-баре исходя из параметра
status_bar_style и цвет статус-бара исходя из параметра action_bar_color.
@param {string} statusBarStyle - тема для иконок статус-бара. Возможные варианты: "light", "dark"
@param {string} actionBarColor - цвет экшн-бара. Возможные варианты: hex-код (#00ffff), "none" - прозрачный.
Параметр работает только на Android
@returns {Promise}
VkSdk.setViewSettings(statusBarStyle, actionBarColor)
scroll
Прокрутка окна приложения
Инициирует скроллинг окна браузера по вертикали.
@param {int} top - смещение скролла относительно нулевой координаты окна. Верх страницы: top === 0
@param {int} speed
@returns {Promise}
VkSdk.scroll(top, speed)
resizeWindow
Изменение размеров окна приложения
Инициирует изменение ширины и высоты элемента IFrame.
@param {int} width - ширина окна. Может принимать значения от 600px до 1000px
@param {int} height - высота окна. Может принимать значения от 500px до 4050px.
@returns {Promise}
VkSdk.resizeWindow(width, height)
getPersonalCard
Вызов карточки контактов
«Карточка контактов» — это то место, где пользователь указывает контактные данные (номер телефона, адрес, e-mail),
которыми он готов поделиться с сервисами сторонних разработчиков.
@param {array} type - массив строк. Возможные значения: phone, email, address
@returns {Promise}
VkSdk.getPersonalCard(type)
Как обновить пакет в npm
Обновить код, в package.json изменить версию, затем:
$ npm adduser // нужно, если пользователь не авторизован
$ npm whoami // проверить авторизован ли пользователь
$ npm publish --access public // если пакет не приватный, иначе не опубликуется
License
MIT.