Авторизация через соц.сети phpbb3 (Loginza)
Добавлено: 15 май 2012, 11:25
Введение
Многие наверняка подозревают о существовании модификации, которая бы позволила в пару кликов авторизоваться у вас на форуме, используя данные аккаунтов пополярный соц.сетей. Сегодня хотелось бы проанонсировать данную модификацию. Впринципе в своем роде она одна такая, правда есть какие то подобия, но в них нет того многообразия социалок как в моде Авторизация через соц.сети phpbb3 (Loginza).
Основные возможности
- Посетители Вашего форума (конференции) смогут без сложной процедуры регистрации авторизироваться на нем и оставлять сообщения, публиковать топики;
- MOD умеет получать дополнительные данные о пользователе из профиля стороннего аккаунта (если они переданы провайдером) для использования их в профиле пользователя phpBB;
- Поддерживаются следующие провайдеры авторизации: Yandex, VKontakte, Facebook, Twitter, Loginza, MyOpenID, Google,Flickr, Last.fm, Mail.Ru, Rambler, Webmoney, AOL, VeriSign и многие другие
Установка
Внимание !!! Мод заброшен разработчиком, ставить на свой страх и риск !!!
В установке модификация очень легка и не требует руссификации. Скачиваем архив, прикрепленный ниже и устанавливаем мод по инструкцииA | Внимание !!! После установки данного мода обязательно проверьте работает ли обычная регистрация на форуме !!! |
Возможные ошибки и методы их решения
1) Field 'loginza_identity' doesn't have a default value
Ошибка гласит о том, что поле loginza_identity не имеет значения по умолчанию.
Решение
Идете в phpMyAdmin, кликаете на имя своей БД, потом слева в списке кликаете наphpbb_users , после этого по центру листаете до поля loginza_identity , напротив этого поля жмете Редатировать(иконка карандашика вроде) и смотрите на скриншот и делаете все аналогично у себя (Проще говоря задаете этому полю значение по умолчанию)
Решение
Идете в phpMyAdmin, кликаете на имя своей БД, потом слева в списке кликаете на
Ошибка гласит о том, что поле loginza_provider не имеет значения по умолчанию.
Решение
Идете в phpMyAdmin, кликаете на имя своей БД, потом слева в списке кликаете наphpbb_users , после этого по центру листаете до поля loginza_provider , напротив этого поля жмете Редатировать(иконка карандашика вроде) и смотрите на скриншот и делаете все аналогично у себя (Проще говоря задаете этому полю значение по умолчанию)
Решение
Идете в phpMyAdmin, кликаете на имя своей БД, потом слева в списке кликаете на
3) Data too long for column 'user_birthday' at row 1
Ошибка гласит о том, что колонка user_birthday имеет малую длину значений(в основном ошибка возникает при авторизации через майл.ру).
Решение
Идете в phpMyAdmin, кликаете на имя своей БД, потом слева в списке кликаете наphpbb_users , после этого по центру листаете до поля user_birthday , напротив этого поля жмете Редатировать(иконка карандашика вроде) и увеличиваете длину значения поля на 1 ( В стандарте, в форуме значение стоит 10, надо заменить на 11)
Решение
Идете в phpMyAdmin, кликаете на имя своей БД, потом слева в списке кликаете на
-------- Обновление на 24.06.2012 --------
1) Добавляем автоматическую загрузку аватар с соц сетей (в админке в настройках аватар должна быть разрешена Загрузка аватар с удаленных серверов).
Открываем includes\loginza\libs\LoginzaUserProfile.class.php и находим
Добавляем после найденного
Открыть includes\loginza\loginza_register.php и найти
Добавить после найденного
Найти
Добавить после найденного
Код: Выделить всё
public function genUserSite () {
if (!empty($this->profile->web->blog)) {
return $this->profile->web->blog;
} elseif (!empty($this->profile->web->default)) {
return $this->profile->web->default;
}
return $this->profile->identity;
}
Код: Выделить всё
public function genUserPhoto () {
if (!empty($this->profile->photo)) {
return $this->profile->photo;
}
}
Код: Выделить всё
$gen_password = $LoginzaProfile->genRandomPassword();
Код: Выделить всё
$loginza_avatar = (string)$LoginzaProfile->genUserPhoto();
$lo_avatar = ImageCreateFromJpeg((string)$LoginzaProfile->genUserPhoto());
$avatar_w = imagesx($lo_avatar);
$avatar_h = imagesy($lo_avatar);
Код: Выделить всё
'user_birthday' => date('d-m-Y', strtotime($profile->dob)),
Код: Выделить всё
'user_avatar' => $loginza_avatar,
'user_avatar_type' => 2,
'user_avatar_width' => $avatar_w,
'user_avatar_height' => $avatar_h,
Открываем все тот же файл includes\loginza\libs\LoginzaUserProfile.class.php и находим
Добавляем после найденного
Код: Выделить всё
'openid\.mail\.ru\/[^\/]+\/([^\/?]+)',
Код: Выделить всё
'openid\.list\.ru\/[^\/]+\/([^\/?]+)',
'openid\.bk\.ru\/[^\/]+\/([^\/?]+)',
'openid\.inbox\.ru\/[^\/]+\/([^\/?]+)',