Skip to content
View in the app

A better way to browse. Learn more.

IPBMafia.ru - поддержка Invision Community, релизы, темы, плагины и приложения

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Вход через VK и Яндекс в Invision Community 5

Featured Replies

Делаю приложение для входа на сайт через VK и Яндекс в Invision Community 5.

Если надо кому могу выложить для начала на тесты. Мне нужна обратная связь по интеграции привязки нескольких соцсетей к одному аккаунту. Надо погонять учетную запись привязав к ней другие соцсети и проверять чтобы синхронизация email и аватар работала исправно. Там еще много всяких нюансов работы приложения.

Важный момент. Для создания OAuth 2+ приложений в VK ID и Яндекс ID надо привязывать к ним госуслуги. На VK ID надо быть предпринимателем ОАО ООО ИП или хотя бы самозанятым не только в налоговой но еще оформить самозанятость в Сбере или в Т банке.

Если есть желающие пишите тут. После тестов выложу приложение в бесплатный доступ с исходниками.

Яндекс ID работает в чистом Invision Community 5 если в /admin/?app=core&module=settings&controller=login&do=form добавить стандартный Other OAuth 2.0. Я в своем приложении добавляю проверку минимального возраста указанного в соцсети и запрет на регистрацию с emai из черных списков.

С VK ID всё сложно, стандартный Other OAuth 2.0 не подойдет, надо отдельное приложение делать.

  • 1 месяц спустя...
On 30.04.2026 at 17:06, aplayer said:

С VK ID всё сложно, стандартный Other OAuth 2.0 не подойдет, надо отдельное приложение делать.

Я сделал авторизацию через VK в публичную часть. Авторизацию в ACP настроить пока не получилось. Если можешь доделать авторизацию в ACP, могу скинуть beta.

image.png

On 30.04.2026 at 17:06, aplayer said:

Яндекс ID работает в чистом Invision Community 5

Тоже планирую это делать. Если есть наработки, пришли для теста. Посмотрю у себя как работает. Подправлю если что.

  • Author

Собственно здесь всё


Обращаю внимание. Я не нашел внутреннего метода движка на получение списка запрещенных Email поэтому он берется напрямую из БД при каждом запросе. Если у вас огромный список или тысячи регистраций, то надо это дело кешировать в редис.

сейчас это дело выглядит не очень и требует создания методов кеширования

			/* Check banned email address */
			if ($this->settings['drop_banned_email']) {
				foreach (\IPS\Db::i()->select('ban_content', 'core_banfilters', array("ban_type=?", 'email')) as $bannedEmail) {
					if (preg_match('/^' . str_replace('\*', '.*', preg_quote($bannedEmail, '/')) . '$/i', self::$response['email'])) {
						unset(self::$response['email']);
						break;
					}
				}
			}

Для VK проверка email необходима, так как там у людей много лет назад были указаны емайлы которые сейчас не существуют и движок будет регулярно слать им новости. Из за чего в ваших почтовых ящиках письма от Mail Delivery System со временем разбухают до гигабайтов если их вовремя не удалять. А в данный момент email не является обязательным для создания VK аккаунта.

С яндексом таких проблем нет там email является логином аккаунта и он не может быть несуществующим. А если пользователь удалит акк на яндексе, то не сможет зайти на ваш сайт.

VK_YA_Login.7z

Edited by aplayer

  • Author
7 часов назад, Zero108 said:

Так решен вопрос с авторизацией в ACP через VK или нет?

исходники полностью рабочие, создайте новое приложение и закиньте их туда.

Готовое приложение выложить не могу по техническим причинам

Удалось решить проблему после недели тестирования и поиска корня проблемы. Авторизация в админцентр через vk работает.

Проблема

VK ID портит параметр state на своей стороне: из base64-сегмента исчезают символ / и хвостовой =. IPS5 core декодирует испорченный сегмент как URL и получает мусор — редирект уходит на несуществующую страницу.

Решение

Перед отправкой пользователя на VK сохраняем нетронутый state в httponly-cookie, ключ — csrfKey (чистый hex, VK его не трогает). При возврате от VK проверяем state: корректный base64 всегда имеет длину кратную 4, повреждённый — нет. Если проверка не прошла, подставляем сохранённый state из cookie вместо испорченного, до того как запрос попадает в IPS core.

Edited by Zero108

  • Author

Слыхали недавно проблема была российскими хостерами в Голландии? Там у меня dev проект сдох. Остались только эти исходники на гитхабе.

В общем в Dev Mode создайте приложение с директорией clogin , назовите его например Custom Login.

добавьте в Developer Center пару Extension c типом Login Handler и скопируйте в них код из папки extensions моих исходников. Остальные файлы закиньте просто так.

отключите \define('IN_DEV', true); он вызывает ошибки

admin/?app=core&module=settings&controller=login - там добавьте методы регистрации итп

исходники завязаны на директорию clogin и в другой работать не будут

  • Author
7 часов назад, Zero108 said:

А можно поинтересоваться, о чем вы сейчас пишите?

о том что у меня голландцы грохнули сервер на котором лежал полный рабочий проект. Остались только исходники на гитхабе. Эти исходники полностью рабочие и пригодны их можно закинуть в новое приложение у которого директория clogin или найти соответствующий неймспейс и переправить на свой.

7 часов назад, Zero108 said:

Какую проблему решают костыли?

там нет костылей. Всё только в рамках семантики IPS движка. Со всеми паттернами проектирования и принципами SOLID

Edited by aplayer

Вам не кажется или кажется, что приложение должно работать из коробки без оглядки на квалификацию пользователя, без странных оглядок на имя директории, без непонятных слов "Dev Mode"? Может это карма с сервером?

  • Author
52 минуты назад, Zero108 said:

без странных оглядок на имя директории

в IPS приложения жестко привязываются к директории. Это значит если вы создаете приложение в директории myapp то это будет неймспейсом всех классов вашего приложения.

Далее вы все классы будете объявлять/вызывать \IPS\myapp\MyClass...

58 минут назад, Zero108 said:

непонятных слов "Dev Mode"

интересно как вы сделали приложение для авторизации в публичной части без Developer Center

9 минут назад, aplayer said:

интересно как вы сделали приложение для авторизации в публичной части без Developer Center

Я уже писал, как я делаю приложения. Я творчески подхожу к заданию, как настоящий художник. Для меня это творчество. Затем использую искусственный интеллект. Проверяю. Сложные ребята, зафиксированные в своем сферическом вакууме и своей временной петле, больше не нужны. Творить прекрасно - это помогает саморазвитию. С удовольствием поделюсь вами примером работы своих приложений.

Edited by Zero108

  • Author

Приложение для входа через ВК и Яндекс

Работает из коробки.

Рекомендуется только для тестирования. Не рекомендуется для использования на реальных (боевых) проектах.

Как пользоваться:

Установить приложение и на странице admin/?app=core&module=settings&controller=login добавить новые методы авторизации.

На ВК и Яндексе укажите адрес, который вы видите в опции: The Redirect URI to use

Из всех настроек можно менять только

Client Identifier

Client Secret email

email из черных списков

Ограничение возраста

А так же цвета и названия кнопок. Allow Admin CP logins итп.

Ендпоинты и прочие идентификаторы сделаны редактируемыми на случай если ВК и Яндекс их поменяют. Такое было не раз у ВК. Сейчас их трогать не надо.

Custom login handler 5.0.18.tar

Пишите сюда если нашли какие либо проблемы при работе приложения

Edited by aplayer

On 22.06.2026 at 20:06, aplayer said:

Работает из коробки.

При авторизации в публичной части - пустая страница после клика кнопки (на кнопке, кстати, нет текста):
https://id.vk.ru/auth?app_id=54627367&client_id=54627367&device_id=&response_type=code&redirect_uri=https://site.ru/applications/clogin/interface/callback/oauthvk/&scope=email&sdk_type=vkid&lang_id=3&scheme=&oauth_version=2&redirect_state=25-aHR0cHM6Ly8pbnZpc2lvbmNvbW11bml0eS5ydS9sb2dpbi8-dd5255c8d3a060bb1f5338a8f7dcd8cd-aHR0cHM6Ly1pbnZpc2lvbmNvbW11bml0eS5ydQ&code_challenge=uhD7MZ3n1ELDbwdJ50o-L7GIoigwbc6LTimtXqf1nDY&code_challenge_method=sha256

Edited by Zero108

  • Author

на https://id.vk.ru/auth всегда есть хоть какой-то текст об ошибке

The Redirect URI to use у вас указан в личном кабинете на ВК на https://id.vk.com/about/business/?

не на старом https://dev.vk.com/ru/admin/apps-list, а на id.vk.com

В админке надо логи смотреть admin/?app=core&module=support&controller=systemLogs

Ну и еще если вы любите делать приложения без Developer Tools, то надо это дело устанавливать на чистый движок у которого все сторонние приложения сделаны в Developer Tools или отсутствуют вовсе.

Но логи покажут более понятную картину

2 часа назад, aplayer said:

The Redirect URI to use у вас указан в личном кабинете на ВК на https://id.vk.com/about/business/?

Уже не помню, так как снес ваше приложение. Помню, что указывал ваш callback - он вроде есть в ссылке, что я привел.

До логов дело не дошло, так как после клика кнопки сразу белый экран по указанной выше ссылке. Попробуйте чистую установку своего приложения.

Edited by Zero108

  • Author

еще одна из причин может быть впн или сайт на иностранном сервере. Сейчас это всё запрещено и блокируется самим ВК.

1 час назад, Zero108 said:

Попробуйте чистую установку своего приложения.

у меня как раз для этого дела два разных сервера. На одном Developer Center на другом чистый IPS. На обоих всё работает.

я сейчас попробовал ввести неверные данные и вот

{D754FC3D-4BCD-492E-B702-3FAB7538BDA8}.png

Да, работает без ВПН.
На кнопке нет текста.

test 3.jpg

Из мелочей: слишком много настроек для простого залогинивальщика. Строка handler_forgot_password_url_deschandler отображается не в виде текста.

Edited by Zero108

ИИ пишет, что ваше приложение может быть скомпрометировано:

Отсутствие PKCE

VK ID не применяет PKCE принудительно на уровне сервера — только декларирует его как требование в документации.

Механика: если запрос авторизации пришёл без code_challenge, VK выдаёт код без привязки к верификатору. При обмене кода на токен сервер не ожидает code_verifier — и просто выдаёт токен. Итог: функционально работает, но без той защиты, ради которой PKCE создавался.

Это распространённая практика: OAuth-серверы добавляют поддержку PKCE, но из соображений обратной совместимости не ломают клиентов, которые PKCE не используют. VK — не исключение.

Какие реальные проблемы возникают из-за отсутствия PKCE

1. Authorization Code Interception (перехват кода авторизации)

PKCE создавался именно для защиты от этой атаки. Если код (?code=...) окажется в:

  • логах сервера / nginx / proxy

  • заголовке Referer браузера

  • истории браузера (особенно при нестандартных redirectах)

  • перехвате MITM на уровне сети

— без PKCE его можно обменять на токен. С PKCE это невозможно без code_verifier, который известен только инициатору запроса.

В контексте АЦП это критичнее: компрометация токена администратора VK-аккаунта потенциально позволяет привязать чужой VK-аккаунт к учётной записи администратора сайта.

2. VK может включить принудительную проверку

Если VK решит начать отклонять запросы без code_challenge"Custom login handler" перестанет работать без обновления. "VK.com Integration" устойчив к этому изменению.

3. device_id игнорируется

VK ID v2 возвращает device_id для привязки токена к устройству. Custom login handler его не обрабатывает — механизм защиты от кражи токена VK-стороны просто не работает.

4. Вероятный скрытый риск: state-corruption на других установках

Если тест проходил на конкретной установке с коротким ACP URL — это повезло. На другой установке или после смены URL admin-панели та же цепочка может начать падать.

Вывод: для небольшого форума с небольшим числом администраторов — приемлемый компромисс. Для высоконагруженного сайта или при повышенных требованиях к безопасности АЦП — риск обоснован. Главная практическая уязвимость не в отсутствии PKCE сейчас, а в том, что при изменении политики VK плагин просто перестанет работать без предупреждения.

Edited by Zero108

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.