Плагин интеграции с социальными сетями


Здравствуйте )
Основной этап работы над плагином интеграции с социальными сетями закончен. Выношу его на обсуждение. Посмотреть в работе можно здесь — http://gladcode.ru. Да, по этой ссылке сборка Charming, но речь пока не о ней, отдельный её анонс будет позже.
Вот что это плагин умеет:
— Авторизовываться на сайте через десяток социальных сетей;
— Брать из социальных сетей доступную дополнительную информацию и заполнять ею профиль создаваемого пользователя.
— Публиковать в социальные сети (не во все, правда) информацию о публикациях пользователя, новом статусе, новой записи на стене;
— Искать по сайту друзей из социальных сетей;
— Публиковать в открытую группу Фейсбука (почему только в нее расскажу попозже) информацию о новых публикациях.
— Конфигурироваться через админку без ковыряния в конфигах.
Теперь обо всем по порядку

1. Процедура авторизации на сайте

Идея простая и для всех соц.сетей одинакова: по клику на ссылку провайдера авторизации вы переходите на его сайт, соглашаетесь, что предоставите сайту определенную информацию о себе. После этого провайдер перенаправляет вас на исходный сайт предоставляя ему возможность получать о пользователе дополнительную информацию и проводить публикации от его имени.
Так как Альто требует обязательного наличия логина пользователя и его электронной почты, то перед созданием профиля пользователя из полученных от провайдера данных мы спрашиваем пользователя о том, какой бы логин он хотел и какую почту привязать к его логину.
То есть моментального входа на сайт в первый раз не получится, увы. Но все последующие попытки входа будут для пользователя проходить довольно быстро, за исключением твитера – это его такая особенность, он каждый раз спрашивает пользователя о его желании все-таки войти на сайт.

2. Множество социальных аккаунтов у одного пользователя

Разумеется у одного пользователя может быть несколько социальных аккаунтов не только у разных социальных сетей, но и у одного. плагин такое учитывает и в профиле пользователя добавлена страница управления связью с социалками, где пользователь может подключить к своему аккаунту на сайте дополнительные их учетки.
Например, у меня, в процессе разработки этого плагина появилось 11-социальных аккаунта (у гугла целых два) и все они прекрасно вместе живут, и на сайт я могу войти под любым из них

3. Какие данные берутся с социальных сетей?

Данные берутся следующие (правда не все провайдеры их предоставляют):
1. Имя;
2. Фамилия;
3. Пол;
4. Информация «О себе» — идет в профиль;
5. Ссылка на страницу, которая уходит в контакты пользователя на сайте.
6. День рождения;
7. Адрес электронной почты;
8. Фотография из профиля социалки.

4. Какие социальные сети поддерживаются?

Поддерживается 9 социальных сетей, которые имеют авторизацию по протоколу OAuth2.0 и Twitter, который еще живет по первой версии. OpenId не поддерживается! Это вот какие провайдеры: Вконтакт, Одноклассники, Фейсбук, Твиттер, Яндекс, Гугл, GitHub, LinkedIn и Instagram c Моим Миром.

5. Репост

Репост полного содержания статей не поддерживается в виду того, что у всех социалок есть ограничения на количество символов в сообщении, к примеру:
— Фейсбук – максимум 420 символов;
— Мой Мир – не больше 400 символов;
— Твиттер – 140 и все;
— Вктонаткт – ограничивается длиной get-запроса.
Остальные социальные сети автоматический репост в себя не делают, ну либо я не увидел как это делается по их официальному мануалу.
В группу разрешает постить только Фейсбук, остальные сети этого не разрешают по причинам безопасности.

Каждый пользователь может настроить параметры репостинга своей информации в социальные сети указав галочкой что и куда нужно отписывать. Кроме того, пользователь сам может указать текстовку, которая будет сопровождать постинг информации от топике, например «Читаем мой новый топик: …» и далее его название и ссылка.
Администратор сайта может направлять любую статью с сайта репостингом в открытую группу фейсбука нажатием кнопки в подвале топика. Опять же в силу ограничений на 420 символов публиковаться будет название топика и ссылка на него.

6. Поиск друзей

Как оказалось, из всех социальных сетей отправлять сообщения пользователям с сайта умеет только Мой Мир. То есть пригласить своих друзей на сайт с помощью меанизма социальной сети я не могу (. Одноклассники даже получить список друзей не дают, требуют официального письма в саппорт с просьбой включить этот API, вот так. Да и вообще не хорошо это: например если у пользователя 1000 друзей, а такие есть, то одной своей рассылкой он сайт повесит, а если и нет, то лимит запросов к API социальной сети точно подрасходует порядочно.
Был создан механизм поиска друзей по сайту, принцип следующий. Пользователь добавляет свою социалку в список подключенных учёток и нажимает кнопку поиска друзей. С его социальной сети поднимается список друзей и, если кто-то из них зарегистрирован на нашем сайте, то этому пользователю отправляется приглашение дружить.

7. Установка

Устанавливается как обычный плагин, но для того, что бы заработала связь с социальными сетями, для каждой нужно создать приложение и получить идентификатор приложения и секретный ключ, которые нужно указать в админке плагина в разделе «Контент». Из файлов конфига ничего не берется, поэтому писать туда ничего не нужно (Более подробно по каждой сети есть в readme плагина).


Плагин будет платным, сейчас определяемся с его стоимостью

По найденным багам просьба писать в комментарии.

PS Плагин доступен в каталоге

Похожие статьи


47 комментариев

+1
Звучит очень сильно
0
Попробовал, сначала смутило что меня никто не спросил логин, после регистрации через соц. сеть. Но потом нашел в описании что это предусмотрено.

1. Большой перечень социальных сетей.
2. Поиск друзей.
3. Репосты.

Лично я заинтересован. Осталось услышать вашу цену.
0
Дело в том, что плагин сейчас работает на социальной модификации «Charming», а там логин не используется, только Имя-Фамилия.

Сам плагин, конечно, спрашивает логин, просто для «Charming» от выпилен и из этого плагина.

Цена пока под вопросом
+2
Андрей, ты взорвал мой мозг. Боюсь представить, сколько человеко-часов было на это потрачено.
P.S. Есть некоторые нюансы по тексту — отправил в личку.
+1
Не столько уж и много :). Больше времени мануалы по API соц.сетей вычитывал.
+1
Отличный и очень нужный плагин. Уже его хочу )
+2
Спасибо, как только закончится тестирование плагин появится в каталоге.
0
Если нажать отмена вместо разрешить, ошибка.
0
Спасибо за ошибку, исправил )
+1
Спасибо, с радостью куплю!!!
0
Спасибо за труды! Плагин очень заинтересовал.
0
А когда сие чудо появится?
0
В ближайшие дни, как только закончу тестирование. Уже исправил несколько ошибок.
0
кстати сайт как демо который приведен тупит безбожно.
0
Аватарка из вконтактика так и не подтянулась. И репоста во вконтакт не увидел своего.
0
C аватаркой буду смотреть что случилось, а вот с репостов во вконтакт такая штука: По спецификации методов API вконтакта репостить может только Standalone-приложение, но дело в том, что если я создам в ВК приложение такого типа сайт им все равно не будет. Что бы репостить нужен специальный токен приложения, получить который можно только из адресной строки браузера а сайт к этой строке доступа не имеет.

Можно поступить так — вручную сформировать запрос к ВК, отправить его и когда ВК перенаправит на свою пустую страницу руками скопировать этот токен в плагин и потом можно будет репостить — но это уж очень напоминает костыль. При чем если этот токен сменится, то такую процедуру придется повторить. Такой вид репоста я делать не стал.

Но ВК поддерживает репост «С открытием окна подтверждения». Когда после репоста сайт открывает всплывающее окно и там вы разрешаете репостинг. Вот это самое окно изначально браузерами блокируется — вам нужно разрешить сайту открывать всплывающие окна и репост получится.

Понимаю, что не удобно и криво, но других способов репоста в ВК нет. Вы можете напсиать в поддержку ВК и вам могут открыть, а могут и нет, возможность репоста, но это уже индивидуально.

Репост в ВК плагин поддерживает только через открывающееся окно подтверждения.
Отредактирован:
0
Да, API смены статуса для сайтов в ВК тоже не поддерживается.
0
Отличный плагин, куплю обязательно как выйдет.
+1
Посмотрел на тестовом сайте… Почему то аватары вообще ни из каких сетей не подтягивает на страницу профиля. Там черно белые с какими то еще дополнительными маленькими картинками. Так и должно быть? Из некоторых сетей аватары присутствуют, но не на странице профиля после авторизации, а на странице настроек профиля, некоторые просто обозначают что файла нет. Например на странице настроек после авторизации через VK при попытке открыть такую картинку в окне браузера там ничего нет типа такого gladcode.ru/settings/male_1_black.png А после авторизации через ОК на странице настроек есть аватар и адрес такой gladcode.ru/uploads/images/00/00/26/avatar/0u6d75ca48-3f6a4e0c-15f3f93a.jpeg-100x100.jpeg Но зачем этот аватар на странице настроек и как его подключить в свой основной аватар на сайте непонятно. Идем дальше — авторизация через FB — аватар есть на странице настроек, однако если нажать на уменьшенные изображения аватаров справа от основной картинки в профиле — начинают вращаться колеса ajax загрузки какой то… И после обновления страницы подтянутой аватарки на странице настроек уже нет, вместо нее пустое место такое gladcode.ru/settings/male_2_black.png Через твиттер аватар также не подгрузился изначально. Через маилру подгрузился, после нажатия на маленькое черно-белое изображение и обновления страницы аватар исчезает и ссылается куда то в gladcode.ru/settings/male_1_black.png Через яндекс отображается стандартная голубая заготовка тут gladcode.ru/uploads/images/00/00/00/avatar/avatar_experience_male.png-100x100.png Аналогично исчезает после нажатия на малые изображения и «вращения колес». Через G+ изначально не подгрузилась. Через github я почему то авторизовался Андреем Вороновым, аватарки сразу нужные загрузились, после колес все снова исчезло. Дальше не ковырял. Сама авторизация проходит нормально за исключением github (не мой аккаунт), но с аватарами полный разброд. Может лучше ничего не подтягивать, а назначать какие то по умолчанию, потом пользователь пусть сам меняет на свои. Если можно расскажите в чем смысл маленьких черно белых изображений справа от основного фото.
+4
Спасибо, сейчас буду исправлять.
0
Что то тестовый сайт уже второй или третий день недоступен:(
0
В продажу еще плагин не выставляете?
+1
Функционал впечатляет!
+1
Когда уже будет то? Вадим как то месяц назад говорил «за Андрея»:) что плагин практически готов и на днях поступит в каталог…
0
тоже жду, а то AutoOpenId платный косячно работает на alto
0
Кто знает как плагин запустить? Почему в «контенте» админки не появляется графа, хотя плагин в админке запущен?
0
В админке активировать или через файл plugins.dat
Похоже у Вас плагин не работает, или не хватает прав доступа.
0
В том то и дело, что плагин в админке активирован, и в plugins.dat присутствует,
а в разделе «контент» соответствующего подраздела нет
0
А где в контенте он должен появиться ?
0
Я так понял из описания, что отдельной строчкой, как, например, «СЕО параметры», «Гостевые комментарии» или «Баннеры»
0
Не буду спорить, может так оно и должно быть, особо не вникал во все функции. После активации в настройках профиля должен появиться раздел «соц сети», и иконки при регистрации соц сетей
0
Да, все появилось, не там искал, не в «настройках» а в «контент», как гостевые комментарии
0
Не срабатывает авторизация через Twitter, кто нибудь сталкивался с такой ошибкой? https://github.com/altocms/alto-plugin-ar/issues/2
0
При попытке зайти через facebook пишет
Недопустимые символы в имени логина
Login: 9f6b50ef1e1ba20251d09a18de418ef0
0
Вы где-то ошиблись в ключах доступа
0
С фейсбуком может быть, там три графы вместо двух, видимо раньше требовалась третья, что-то про групповой доступ, которого как я понял сейчас нет. Но с яндексом та же беда, на некорректные символы в логине ругается, там только id и секретный код, больше ничего, самая простая интегоация, и на двух сайтах одно и то же повторяется
0
А смысл подключать Вам яндекс, через него мало кто авторизируется. В основном: вк, одноклассники и фейсбук и не много через твитер (его настроить так и не смог, выдает ошибку при авторизации)
0
Мне кажется одноклассники тоже существуют только в виде логотипа) с настройкой фейсбука проблем не возникло?
0
Вот теперь появились =(
Invalid Scopes: user_groups. This message is only shown to developers. Users of your app will ignore these permissions if present. Please read the documentation for valid permissions at: https://developers.facebook.com/docs/facebook-login/permissions
0
Большое спасибо за плагин, полезная штука!
Внесу свою лепту — немного поправил языковой фаил.

С ФБ пока трабл: при выставлении «Экспресс-регистрация пользователя (будут запрошены только недостающие данные)» вот такая штука
0
А никто не сталкивался с проблемой, в alto-plugin-ar-1.2.7.zip, что после входа через соц.сеть подгружается фото профиля без адаптации под размер аватара на сайте. Причем, если пользователь залил, к примеру, на ВК 800х800, то и аватар становиться 800х800 и тем самым закрывает пол экрана, растягивая верхнюю часть сайта. И он будет таким везде, пока пользователь не изменит его, перезалив на Вашем сайте.
0
Проблема в том, что аватар из соц сети не «адаптируется» и если картинка загружена большая, то так и отражается, закрывая половину текста.
Пример комментария при авторизации через соц сеть.
0
Помогите!!! Люди оставляют комментарии и их аватары на пол экрана.
Когда планиг подтягивает «8. Фотография из профиля социалки.», то он её не адаптирует под размеры аватара сайта. Чтобы не терять подписчиков и комментарии я сижу и руками правлю|уменьшаю каждый аватар.
0
Попробуйте через css задать высоту и ширину
img {
     width: 50px;
     height: 50px;
}


Посмотрите исходный код элемента и отредактируйте соотв. css файл
0
тут проблемка. Он указывает на css движка, а движок считает, что все в порядке, т.к. в движке вообще нет картинки (там силуэт). Нужно поправить именно в модуле, чтобы он сразу обрезал /.сжимал картинку в момент её получения с сервера социалки.

Я нашел такой код в User.class.
 public function UploadAvatar($sFile, $oUser, $aSize = array()) {

        if (!F::File_Exists($sFile)) {
            return FALSE;
        }
        if (!$aSize) {
            $oImg = E::Module('Img')->CropSquare($sFile, TRUE);
        } else {
            if (!isset($aSize['w'])) {
                $aSize['w'] = $aSize['x2'] - $aSize['x1'];
            }
            if (!isset($aSize['h'])) {
                $aSize['h'] = $aSize['y2'] - $aSize['y1'];
            }
            $oImg = E::Module('Img')->Crop($sFile, $aSize['w'], $aSize['h'], $aSize['x1'], $aSize['y1']);
        }
0

Вот такие аватары есть, а движок считает, что он 74х74
0
Вот смотрите тут на сайте если посмотреть исходный код вашего аватара в комментарии

<img src="http://altocms.ru/uploads/images/00/00/00/avatar/avatar_crisp_male.png-64x64.png" alt="smalex" title="smalex" class="avatar">

.entry-comments footer img {
    background: #d8dfe5;
    float: left;
    width: 50px;
    height: 50px;
    -webkit-border-radius: 60px;
    border-radius: 60px;
}


Ссылается на файл стилей http://altocms.ru/_run/assets/48040254d20c4d1c231b582b642d7014.css который очевидно сжатый, если у себя отключите сжатие (или как там оно называется) скорее всего получите ссылку на нужный файл.

Судя по вашему скриншоту, нужно найти класс img.avatar.visible-lg или img.avatar Не могу гарантировать, что это сработает, но по логике у css преимущество перед тем, что генерирует движок, т.к. именно css отвечает за оформление выводимого контента пользователю. Только если движок не генерирует этот самый css.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.