/var/log/life.log
Блог программиста из солнечной Бурятии

Авторизация в joomla через OPEN API ВКонтакте

18 Апреля Социальная сеть ВКонтакте, предоставила возможность авторизовывать пользователей ВКонтакте на своих сайтах и с их согласия получать доступ к их информации, друзьям, фотографиям, аудиозаписям, видеороликам, объявлениям и др. Как обычно они пошли своим путём, и вместо использования к примеру Open Id, сделали свой велосипед. Впрочем, уж лучше так, чем совсем никак. Специфика этого API и joomla не позволила мне сделать возможность авторизоваться через ВКонтакте только authentication плагином. Понадобился ещё и компонент. А также модуль для того, чтобы показывать кнопку “Войти ВКонтакте”.
Совместная работа модуля, плагина и компонента для входа через ВКонтакте выглядит следующим образом:

нажимаем кнопку “Войти ВКонтакте”

т.к. joomla требует для каждого пользователя уникальный email, а ВКонтакте его не даёт, то приходится его запрашивать у пользователя при первой попытке входа, а также уточняем Имя и login

после чего, оказываемся залогиненым на сайте

скачать:
теперь страница с компонентом здесь
UPD: ВКонтакте вводит возможность изменения адреса станицы, и обещают, что потом этот адрес будет использоваться к качестве email, так что проблема получения email может быть решена
UPD2: по просьбам трудящихся, сделал модуль и компонент для joomla 1.0, брал из репозитория http://joomlacode.org/svn/joomla/development/releases/1.0 , в ней у меня возникли проблемы русскими символами, в поле имени всего 7 символов входит, но я с joomla1.0 не знаком и возможно в русских сборках такой проблемы нет, по той же причине настройки хранятся в файле vklogin.config.php
[download id=”9″]
[download id=”10″]
UPD3: Как создать и настроить приложение вконтакте для сторонних сайтов написано тут
должно получиться что-то подобное

Если количество настроек отличается, то желательно пересоздать, чтобы создалось приложение такого типа, иначе возможны проблемы при первой авторизации.
P.S.: принимаю благодарности Яндекс.Деньгами 41001582816553 :)