SOCIAL — Социальные сети и OAuth
Версия: 2.1.0
Дата: 2026-03-24
Обзор
Интеграция с социальными сетями решает три задачи:
- OAuth вход — быстрая авторизация без пароля
- Социальные ссылки — присутствие бренда в соцсетях
- Шеринг товаров — распространение контента пользователями
1. OAuth авторизация
1.1 Приоритет провайдеров (RU)
| # |
Провайдер |
Аудитория |
Данные |
Drupal модуль |
| 1 |
Telegram |
85M+ |
Телефон, имя, фото |
social_auth_telegram |
| 2 |
VK ID |
100M+ |
Телефон, имя, email, фото |
social_auth_vk |
| 3 |
Яндекс ID |
80M+ |
Телефон, имя, email |
social_auth_yandex |
| 4 |
Mail.ru |
50M+ |
Через VK ID |
(через VK) |
1.2 Модули Drupal
Базовый стек
# composer.json
require:
drupal/social_auth: ^4.0
drupal/social_auth_telegram: ^3.0
drupal/social_auth_vk: ^3.0
# Яндекс — кастомный или через generic OAuth
Social Auth (основной)
Настройка Telegram
- Создать бота через @BotFather
- Получить Bot Token
- Настроить домен:
/setdomain → ваш сайт
- Включить Login Widget в настройках бота
// settings.php (пример)
$config['social_auth_telegram.settings']['bot_token'] = 'YOUR_BOT_TOKEN';
$config['social_auth_telegram.settings']['bot_name'] = 'YourBotName';
Настройка VK ID
- Создать приложение: vk.com/apps
- Тип: Сайт
- Получить App ID и Secure Key
- Настроить Redirect URI:
https://site.ru/user/login/vk/callback
$config['social_auth_vk.settings']['app_id'] = 'YOUR_APP_ID';
$config['social_auth_vk.settings']['app_secret'] = 'YOUR_SECRET_KEY';
Настройка Яндекс ID
- Создать приложение: oauth.yandex.ru
- Тип: Веб-сервисы
- Права:
login:info, login:email
- Callback URL:
https://site.ru/user/login/yandex/callback
// Через Generic OAuth или кастомный модуль
$config['social_auth_yandex.settings']['client_id'] = 'YOUR_CLIENT_ID';
$config['social_auth_yandex.settings']['client_secret'] = 'YOUR_SECRET';
1.3 UX вход
Форма входа
┌─────────────────────────────────────┐
│ Вход в личный кабинет │
├─────────────────────────────────────┤
│ │
│ [📱 Войти через Telegram] │ ← Основной
│ [🔵 Войти через VK] │
│ [🔴 Войти через Яндекс] │
│ │
│ ─────────── или ─────────── │
│ │
│ Телефон: [+7 ___-___-__-__] │
│ [Получить SMS-код] │
│ │
└─────────────────────────────────────┘
При checkout (гостевой)
┌─────────────────────────────────────┐
│ Быстрое оформление │
├─────────────────────────────────────┤
│ │
│ Войдите для скидки −10%: │
│ │
│ [📱 Telegram] [VK] [Яндекс] │
│ │
│ или введите телефон: │
│ [+7 ___-___-__-__] │
│ │
└─────────────────────────────────────┘
1.4 Привязка к телефону
Телефон = главный идентификатор клиента
После OAuth входа:
1. Если телефон получен от провайдера → используем
2. Если нет → запрашиваем телефон (VK не всегда даёт)
3. Проверяем телефон на дубликаты
4. Объединяем аккаунты при совпадении
2. Социальные ссылки
2.1 Где размещаем
| Место |
Соцсети |
Приоритет |
| Footer |
Все |
Must |
| Страница контактов |
Все + мессенджеры |
Must |
| Header (мобильный) |
Telegram, WhatsApp |
Nice |
| Карточка товара |
Шеринг |
Nice |
2.2 Список соцсетей
| Соцсеть |
Тип |
URL формат |
Иконка |
| Telegram |
Мессенджер |
t.me/username |
telegram |
| VK |
Соцсеть |
vk.com/group |
vk (кастом) |
| WhatsApp |
Мессенджер |
wa.me/79991234567 |
whatsapp (кастом) |
| YouTube |
Видео |
youtube.com/@channel |
youtube |
| Дзен |
Блог |
dzen.ru/id/xxx |
dzen (кастом) |
| Одноклассники |
Соцсеть |
ok.ru/group |
ok (кастом) |
2.3 Drupal модули для ссылок
# Простое решение — кастомный блок
# Продвинутое — модули:
drupal/social_media_links: ^7.0 # Виджет соцсетей
drupal/social_icons: ^2.0 # Иконки соцсетей
// Конфигурация блока
$config['social_media_links.settings'] = [
'platforms' => [
'telegram' => ['url' => 'https://t.me/yourshop'],
'vk' => ['url' => 'https://vk.com/yourshop'],
'whatsapp' => ['url' => 'https://wa.me/79991234567'],
'youtube' => ['url' => 'https://youtube.com/@yourshop'],
],
'icon_style' => 'square-color',
'link_attributes' => [
'target' => '_blank',
'rel' => 'noopener',
],
];
2.4 Кастомные иконки (SVG)
Lucide Icons не имеет VK, WhatsApp, Дзен. Добавляем кастомные:
<!-- VK -->
<symbol id="vk" viewBox="0 0 24 24">
<path d="M21.547 7H16.86c-.1 0-.2.1-.2.2 0 0 0 4.1 4.7 4.1h.2c.1 0 .2.1.2.2 0 3.4-4.3 5.5-8.2 5.5s-8.2-2.1-8.2-5.5c0-.1.1-.2.2-.2h.2c4.7 0 4.7-4.1 4.7-4.1 0-.1-.1-.2-.2-.2H5.453C2.847 7 1 9.847 1 13c0 5.523 4.477 10 10 10s10-4.477 10-10c0-3.153-1.847-6-4.453-6z"/>
</symbol>
<!-- WhatsApp -->
<symbol id="whatsapp" viewBox="0 0 24 24">
<path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/>
</symbol>
<!-- Telegram (в Lucide есть send, но не официальный) -->
<symbol id="telegram" viewBox="0 0 24 24">
<path d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"/>
</symbol>
{# components/social-links/social-links.twig #}
<div class="social-links">
{% for link in links %}
<a href="{{ link.url }}"
class="social-links__item"
target="_blank"
rel="noopener"
aria-label="{{ link.name }}">
{% include 'ideal_shop:icon' with {name: link.icon} %}
</a>
{% endfor %}
</div>
3. Шеринг товаров
3.1 Кнопки шеринга
| Платформа |
URL шеринга |
Параметры |
| VK |
vk.com/share.php |
url, title, image |
| Telegram |
t.me/share/url |
url, text |
| WhatsApp |
wa.me/?text= |
text (URL encoded) |
| OK |
connect.ok.ru/offer |
url, title, imageUrl |
3.2 Drupal модули
drupal/social_share: ^2.0 # Кнопки шеринга
drupal/sharethis: ^3.0 # Альтернатива
3.3 Без модуля (кастом)
{# templates/commerce/share-buttons.html.twig #}
{% set share_url = url('<current>')|url_encode %}
{% set share_title = product.title.value|url_encode %}
{% set share_image = file_url(product.field_images.0.entity.uri.value)|url_encode %}
<div class="share-buttons">
<span class="share-buttons__label">{{ 'Поделиться:'|t }}</span>
{# VK #}
<a href="https://vk.com/share.php?url={{ share_url }}&title={{ share_title }}&image={{ share_image }}"
target="_blank" rel="noopener" class="share-buttons__btn share-buttons__btn--vk">
{% include 'ideal_shop:icon' with {name: 'vk'} %}
</a>
{# Telegram #}
<a href="https://t.me/share/url?url={{ share_url }}&text={{ share_title }}"
target="_blank" rel="noopener" class="share-buttons__btn share-buttons__btn--telegram">
{% include 'ideal_shop:icon' with {name: 'telegram'} %}
</a>
{# WhatsApp #}
<a href="https://wa.me/?text={{ share_title }}%20{{ share_url }}"
target="_blank" rel="noopener" class="share-buttons__btn share-buttons__btn--whatsapp">
{% include 'ideal_shop:icon' with {name: 'whatsapp'} %}
</a>
{# Копировать ссылку #}
<button type="button" class="share-buttons__btn share-buttons__btn--copy" data-copy-url>
{% include 'ideal_shop:icon' with {name: 'link'} %}
</button>
</div>
3.4 Open Graph мета-теги
Для корректного отображения при шеринге:
<meta property="og:title" content="Название товара">
<meta property="og:description" content="Описание товара">
<meta property="og:image" content="https://site.ru/image.jpg">
<meta property="og:url" content="https://site.ru/product/123">
<meta property="og:type" content="product">
<meta property="og:site_name" content="Название магазина">
<!-- VK специфичные -->
<meta property="vk:image" content="https://site.ru/image.jpg">
<!-- Twitter/X -->
<meta name="twitter:card" content="summary_large_image">
Модуль: drupal/metatag + drupal/metatag_open_graph
4. Мессенджеры для поддержки
4.1 Виджеты чата
| Сервис |
Модуль/Виджет |
Стоимость |
| Telegram |
Кастомная ссылка |
Бесплатно |
| WhatsApp |
WhatsApp Business Widget |
Бесплатно |
| JivoSite |
jivosite.ru |
От 0₽ |
| Carrot quest |
carrotquest.io |
От 990₽/мес |
| Chatra |
chatra.io |
От 0₽ |
4.2 Простой виджет
<!-- Плавающая кнопка мессенджеров -->
<div class="messenger-widget">
<button class="messenger-widget__toggle" aria-label="Написать нам">
<svg><!-- chat icon --></svg>
</button>
<div class="messenger-widget__menu">
<a href="https://t.me/yourshop_bot" class="messenger-widget__item">
<svg><!-- telegram --></svg>
Telegram
</a>
<a href="https://wa.me/79991234567" class="messenger-widget__item">
<svg><!-- whatsapp --></svg>
WhatsApp
</a>
</div>
</div>
5. Чеклист интеграции
Must (MVP)
- [ ] OAuth: Telegram Login Widget
- [ ] OAuth: VK ID
- [ ] Соцссылки в footer (VK, Telegram, WhatsApp)
- [ ] Open Graph мета-теги (metatag модуль)
- [ ] Кнопка "Написать в Telegram/WhatsApp"
Should (v1.1)
- [ ] OAuth: Яндекс ID
- [ ] Шеринг товаров (VK, Telegram)
- [ ] Виджет мессенджеров (плавающая кнопка)
- [ ] YouTube канал в footer
Nice to Have
- [ ] OAuth: Google (для иностранцев)
- [ ] Шеринг в OK
- [ ] Дзен канал
- [ ] Интеграция с JivoSite/Carrot quest
6. Конфигурация
6.1 Drupal Recipe
# recipes/social/recipe.yml
name: Social Integration
description: OAuth login and social links
type: Site
install:
- social_auth
- social_auth_telegram
- social_auth_vk
- metatag
- metatag_open_graph
config:
import:
social_auth: '*'
actions:
block.block.social_links_footer:
createIfNotExists:
plugin: social_media_links_block
region: footer_bottom
settings:
platforms:
telegram:
url: 'https://t.me/yourshop'
vk:
url: 'https://vk.com/yourshop'
whatsapp:
url: 'https://wa.me/79991234567'
6.2 Переменные окружения
# .env
TELEGRAM_BOT_TOKEN=123456:ABC-DEF...
TELEGRAM_BOT_NAME=YourShopBot
VK_APP_ID=12345678
VK_APP_SECRET=xxx
YANDEX_CLIENT_ID=xxx
YANDEX_CLIENT_SECRET=xxx
# Ссылки на соцсети
SOCIAL_TELEGRAM=https://t.me/yourshop
SOCIAL_VK=https://vk.com/yourshop
SOCIAL_WHATSAPP=+79991234567
SOCIAL_YOUTUBE=https://youtube.com/@yourshop
7. Безопасность
OAuth
| Риск |
Защита |
| Подделка callback |
Проверка state параметра |
| Перехват токена |
Только HTTPS |
| Множественные аккаунты |
Привязка к телефону |
| Спам-регистрации |
Rate limiting + капча |
Ссылки
| Риск |
Защита |
| XSS в share URL |
Экранирование url_encode |
| Открытый редирект |
Whitelist доменов |
| Трекинг |
rel="noopener" |
Связанные документы
Версия: 2.1.0