Как стать автором
Обновить

Комментарии 45

НЛО прилетело и опубликовало эту надпись здесь
Огромное спасибо. Давно мечтаю перевести свой блог на систему авторизации через twitter/facebook/vk/google
Мне бы этих четырех было вполне достаточно (или даже трех). Так что топик в избранное и жду новых ркуоводств.
Loginza.ru подойдет и избавит от необходимости вручную настраивать для каждого провайдера
не-не, это дополнительные несколько действий которые полностью отсекаются в случае применения решения из топика. Пробовал — знаю.
Лучше день потерять, потом за пять минут долететь. ©
А что именно вас там не устроило? Просто интересно.
У меня блог на wordpress, и при попытке авторизоваться через сторонний аккаунт — пользователь всё-равно переходит в форму регистрации WP, со всеми соответствующими движениями.
Я же хочу, что бы было как на lifehacker.ru, который тоже работает на wordpress.
НЛО прилетело и опубликовало эту надпись здесь
Я думаю, что правильнее будет сделать так, как в описано в топике, чем переделывать чей-то код, который определенным образом уже оптимизирован. Да и то, что это дополнительный плагин — не есть «гут».
поставьте disqus
Та же беда что и с Логинза.
Зачем использовать кучу разных плагинов (да пусть даже один) если есть красивое, и, на мой взгляд, правильное решение.
спасибо за высокую оценку нашей работы :)
У меня нет какого-либо предвзятого мнения, более того, я пару рас использовал disqus для блогов, которые делал под заказ, но мне это решение не совсем подходит. Этакая полумера, если вы понимаете, о чем я говорю.
я имел в виду lifehacker.ru :)
Ааааа, ну да. Я так умолял в комментариях к посту про новую систему авторизации описать процесс установки такой же у себя, но в ответ тишина, а так сайт нужный и важный. В RSS у меня висит. Даже пару моих твиттов на сайте есть ;-)
Не забывайте, пожалуйста, про OpenID.

А если ещё и автор напишет об OpenID — будет совсем хорошо.
Спасибо большое, очень полезная статья. Жду продолжения.
Если у юзера много аккаунтов, как бороться с ботами?
не бороться
никак не поборешься
вот и дело, что это на самом деле большой минус.
Приязывать аккаунт к номеру телефона :)
ещё хлеще.
Я, почемк-то, не доверяю всем этим яваскриптовым виджетам…
Написал себе php-библиотечку для авторизации и использования API вконтакте и фейсбука и радуюсь.
Правда, перепиливал ее несколько раз из-за изменений в api, сейчас переписать бы ее, а то уже немного стыднона костыльный код смотреть, но тем не менее, вполне работает.

Единственный нюанс, который стоит отметить для всех, кто такое делает:
Что у вконтакта, что у ФБ — не всегда всё приходит.
Не знаю, с чем это связано, но от вконтакта иногда приходят фрагменты данных, а у ФБ не всегда отдаются аватарки через социальный граф. Так что это нужно обязательно проверять.
Интересно, много ли еще новых сайтов на PHP содержат такой код, как этот: $result = mysql_query("SELECT id, random, password FROM tracker_users WHERE username = 'vk-$uid'");
А в чем собственно проблема?
В 2011 году программисты используют PDO, Active Record, mysqli на худой конец.
А с какого года программисты (не)используют code conventions?
Автор дорабатывал уже готовый и работающий код, насклько я понял.
Да защищать меня не надо, как все наверное обратили внимание в статье нет ни намека на ооп и обертки обращений к базе данных. Блог называется «веб-разработка для начинающих», я и в следующей статье буду использовать подобный стиль, если кто-то захочет внедрить пример из статьи в свой код — пожалуйста, используйте всю мощь современных технологий, но для начинающих программистов обычные mysql_query — просто и привычно.
но для начинающих программистов обычные mysql_query — просто и привычно.

Беда в том, что найдя пример кода, они тащат эти примеры в продакшен с мнимальными изменениями.
Очень и очень вредно давать начинающим примеры с mysql_query и переменными в запросе, без prepared statements
Prepared statements не панацея от SQL иньекции…
code conventions для PHP — фильтровать переменные и пользоваться mysqli. Об отказе от старого модуля mysql официально заявили разработчики
А может стоит дать пользователю возможность самому после первой авторизации через сторонний сервис ввести логин и пароль? Так по моему будет правильней.
Тогда это будет уже не авторизация через сторонний сервис, а «получение имени, аватарки и других данных и добавление их в базу с последующим игнорированием социальной сети, откуда пришел пользователь». А здесь задача была именно использовать соц.сети с обновлением данных при каждой авторизации в случае если пользователь сменил ник, аватарку или что-то другое.
А зачем пользователю вообще логин и пароль, если он всегда будет авторизовываться через соц.сеть?
Главное — выдать ему ID в базе при первом логине и сессионную куку каждый раз выдавать.
Если принципиально знать, что он через вконтакт заходит — эту информацию не обязательно в логин пользователя упаковывать, можно хранить где-то отдельно.
Поясню почему я придерживаюсь другой точки зрения: у меня пользователи могут оставлять комментарии, голосовать, писать в чат, загружать торренты и мне (как и всем другим, у которых действия пользователей сохраняются) необходимо например при добавлении комментария вставлять запись в которой обязательно должен быть какой-нибудь неизменный айдишник.
Ну так внутри системы у пользователей есть ID-шники ведь? Primary key в базе например. Его и вставлять. Логина и пароля у пользователя, который залогинился через соц.сеть, не существует.
Возможность можно, но не обязательную. Вообще сейчас, имхо, нужно давать пользователям возможность и регистрироваться, и логиниться различными способами на выбор, рассматривая внутренние способы регистрации и аутентификации равноправно с внешними, то есть как ещё один сервис, который чисто случайно оказался на вашем же сайте, и поэтому вам нужно не только с интерфейсом работать, но и реализацию сделать.
Ну, так я о том же по сути говорю. Просто я считаю, что пользователь должен все же сам ввести логин и пароль после первого входа на сайт через сторонний сервис, а если у него уже есть акаунт на вашем сайте, то дать ему возможность привязать этот ак. из стороннего сервиса к акаунту на сайте.

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

P.S. Хотя если у вас задача дать пользователю оставить коммент на сайте, то можно вполне обойтись и простым методом как у вас.
К счастью, вконтакт начал поддерживать нормальный протокол OAuth — на мой взгляд лучше использовать его, чем их «велосипед».
Так же будет проще потом подключать другие сервисы.
Хотелось бы еще OpenID в деле увидеть… Запарился на нем :)
Да-да, OpenID очень надо, можно на примере LJ.
очень хорошая статья, спасибо.
Хорошо, что у меня есть Omniauth…
(-:
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации