Top.Mail.Ru
Подписка на сообщество для Web | VK ID - сервис авторизации
VK ID auth service logo

Подписка на сообщество для Web

Документация актуальна для версии VK ID SDK — 2.5.0-alpha.
После того, как вы запросили доступ для работы с сообществами (groups) в настройках приложения, отобразите окно подписки на сообщество в вашем сервисе. Окно подписки можно отобразить в любой момент при использовании приложения. Перед началом работы выполните действия в зависимости от способа интеграции: Чтобы пользователь мог подписаться на сообщество:
  1. Выберите способ интеграции:
    • если вы используете авторизацию через SDK, пропишите доступ для работы с сообществами в коде вашего приложения:
      VKID.Config.init({
        ...
        scope: 'groups',
      });
    • если вы используете авторизацию без SDK, добавьте scope=groups в URL для авторизации:
      https://id.vk.ru/authorize?response_type=code&client_id=12345&scope=groups
  2. Получите Access token после авторизации пользователя — в нём будет доступ для работы с сообществами.

Лимиты показа окна подписки на сообщество

Вы можете настроить отображение окна подписки:
  • задать количество показов окна;
  • указать для этого количества показов период в днях;
  • полностью отключить лимиты показа окна.
По умолчанию окно подписки отображается пользователю после авторизации два раза за 30 дней — при этом момент показа может быть любой, он не зафиксирован жёстко. Лимиты позволяют регулировать количество показов за указанный период, чтобы частые показы не мешали пользователю. Задайте необходимые параметры отображения окна подписки при инициализации VK ID SDK.
VKID.Config.init({
  ...
  GroupSubscriptionsLimit = {
    maxSubscriptionsToShow: 2;  // Количество показов окна подписки.
    periodInDays: 30;  // Период для этого количества показов.
  },
});

Как создать окно подписки на сообщество

Примеры импорта модулей и отрисовки окна подписки на сообщество
import * as VKID from '@vkid/sdk';

// Создание экземпляра окна подписки.
const communitySubscription = new VKID.CommunitySubscription();

// Отрисовка окна подписки с ID сообщества GROUP_ID, токеном ACCESS_TOKEN, светлой темой и на русском языке
communitySubscription.render({ groupId: GROUP_ID, accessToken: ACCESS_TOKEN, scheme: VKID.Scheme.LIGHT, lang: VKID.Languages.RUS })

Список параметров

ПараметрОбязательныйТипЗначение по умолчаниюОписание
groupIdДаInt-ID сообщества. Его можно увидеть на странице сообщества в ВКонтакте в разделе Подробная информация
accessTokenДаString-Access token, который содержит доступ для работы с сообществами
schemeНетEnum VKID.Scheme или StringVKID.Scheme.LIGHTЦветовая схема. Для переключения на тёмную тему используйте значение VKID.Scheme.DARK
langНетEnum VKID.Languages или numberVKID.Languages.RUSЛокализация. Для переключения на другие языки используйте эти значения

Как обработать статус подписки на сообщество

После вызова метода communitySubscription.render() появится окно подписки на сообщество. Когда пользователь нажмёт Подписаться на сообщество, SDK покажет ему статус подписки: успех или ошибка.
Snackbar об успешном статусе подписки на сообщество
Экран с ошибкой при попытке подписаться на сообщество
Если вы хотите, чтобы ваш сервис тоже получал статус подписки на сообщество, настройте обработчик. Пример настройки обработчика
communitySubscription
  .on(VKID.CommunitySubscriptionEvents.SubscribedSuccessfully, () => {...}) // Обработчик успешной подписки.
  .on(VKID.WidgetEvents.ERROR, (e: VKID.CommunitySubscriptionError) => {...}); // Обработчик ошибок.
Возможные ошибки из Enum VKID.CommunitySubscriptionErrorCode
  • isServiceAccount — пользователь авторизовался с помощью аккаунта VK ID, который не прошёл процедуру дорегистрации. Это значит, что пользователь не создал учётную запись в социальной сети ВКонтакте;
  • GroupNotFound — ошибка при получении данных сообщества;
  • GroupClosed — сообщество закрыто;
  • AlreadyMember — пользователь уже подписан на сообщество;
  • ScopeMissing — в Access token отсутствует доступ groups;
  • UnknownError — при выполнении запроса произошла неизвестная ошибка;
  • RemoteLimitReached — достигнут лимит успешных подписок на сообщество, который указан в договоре;
  • BadRequest — неправильно указан groupId.