Новости Django Social Auth
В продолжение статьи «Авторизация в социальных сетях для Django».
Основная ветка проекта развивается довольно интенсивно, добавилась поддержка LinkedIn, Google OAuth2, тесты и большое количество мелких, но полезных фитюлечек, вроде автоматического ассоциирования пользователя по e-mail.
Замечена интересная особенность Google OpenID. Если ваш сайт поддерживает «сквозную» авторизацию на поддоменах и вам принципиально, чтобы человек, авторизовавшийся в одном поддомене, мог продолжать работать без авторизации и в другом, я рекомендую воспользоваться Google OAuth. Фишка в том, что Google OpenID выдает разные id пользователя для разных поддоменов одного и того же сайта. Так как библиотека не может определить, что пользователь, который пришел на поддомен ААА, уже был зарегистрирован в поддомене БББ, в результате создается новая учетная запись. У OAuth такой проблемы нет, зато есть два плюса: вы гарантированно получаете e-mail пользователя и вам не нужно регистрировать свое приложение, как в OAuth 2.0.
Обнаружена ошибка в библиотеке Python-OpenID, которая выдает довольно странную диагностику: OpenID authentication failed: return_to does not match return URL, при этом URL’ы совпадают. Обсуждение находится здесь, авторам библиотеки сообщение отправлено, ждем, когда поправят.
В моем форке два изменения:
- Для авторизации на Yandex теперь не обязательно указывать имя пользователя. Если оно не задано, то используются возможности OpenID 2.0, сервер с библиотекой договариваются сами и, когда надо, задают пользователю необходимые вопросы. Спасибо Ивану Сагалаеву за подсказку (детали обсуждения здесь).
- Добавлен backend для авторизации на Одноклассниках с использованием OAuth 2.0. По умолчанию запрашиваемый scope минимален, этого хватает для авторизации, а пользователю не нужно мучительно размышлять, давать ли доступ к своей стене, e-mail и пр.
Внимание, вопрос: поддержку какого именно сервиса авторизации вам бы хотелось увидеть следующей: ВКонтакте через OAuth 2.0 или Mail.ru?
Ответы на: Новости Django Social Auth
Grigoriy Petukhov пишет:
19 апреля, 2011
Привет, а какую ты библиотеку используешь для oauth2? Я сейчас делаю практически тот же велосипед, что и ты (http://bitbucket.org/lorien/django-xauth). Так вот, насколько я понял, python-oauth2 либа реализует oauth v.1 протокол, а для oauth v.2 я заюзал другую либу, там в README она описана.
krvss пишет:
19 апреля, 2011
Ну я изобретаю не совсем велосипед, а часть велосипеда 🙂 Сам движок делает автор django-social-auth, я и несколько других людей предлагаем свои доработки конечно, но в основном я занимаюсь нужными своему проекту backends.
Для OAuth используется https://github.com/simplegeo/python-oauth2, она же используется и для oauth v. 1.
Grigoriy Petukhov пишет:
19 апреля, 2011
А я чё-то не понял, как использовать python-oauth2 для oauth v.2 можешь дать прямую ссылку на код, где ты юзаешь oauth v.2 через эту либу?
krvss пишет:
19 апреля, 2011
Напрямую я ее не использую, наследуюсь от класса social_auth.backends.BaseOAuth2. Вот исходник файла с этим классом: https://github.com/krvss/django-social-auth/blob/master/social_auth/backends/__init__.py
Внутри как-то все совсем просто, но я не вникал — необходимости нет.
Иван Сагалаев пишет:
19 апреля, 2011
Традиционная просьба: поправьте, пожалуйста, фамилию в тексте — Сагалаев.
krvss пишет:
19 апреля, 2011
Прошу прощения, поправил. Сегодня день ошибок в фамилиях — написал такое же письмо про свою фамилию несколько часов назад.
Иван Сагалаев пишет:
19 апреля, 2011
Меня вообще так довольно часто путают 🙂
krvss пишет:
20 апреля, 2011
Меня один раз переделали вообще в Кварца.
Кстати, развернулась дискуссия насчет той проблемы с janrain-none в POST с авторами python-openid. Пока они меня пытаются убедить в том, что виноваты все, кроме них 🙂 Расскажу попозже чем дело кончится.
Денис Малиновский пишет:
21 апреля, 2011
Я за Вконтакте. 🙂
krvss пишет:
30 апреля, 2011
Готово 🙂 http://www.ikrvss.ru/2011/04/30/django-social-auth-new2/
cwer пишет:
22 апреля, 2011
mail.ru, останется только рамблер из почтовиков, которыми пользуются в России
krvss пишет:
25 апреля, 2011
Да, mail.ru работает на OAuth, проблем быть не должно.
krvss пишет:
30 апреля, 2011
Поддержка OAuth для Mail.ru готова: http://www.ikrvss.ru/2011/04/30/django-social-auth-new2/
cwer пишет:
23 апреля, 2011
И вообще предлагаю отделить дополнительные бэкенды в отдельный апликейшн, чтоб можно было установить официальный social-auth и отдельно этот аппликейшн и не заботиться о том, синхронизирован ли ваш форк с ним
cwer пишет:
23 апреля, 2011
Конечно же синхронизирован не с отдельным апликейшеном, а с официальным social-authç Непонятно написал в предыдущем комменте
krvss пишет:
25 апреля, 2011
То, как сделано сейчас гарантирует, что не будет проблем с официальным django-social auth. Если разделить я боюсь через какое-то время начнутся проблемы — django-social-auth иногда довольно жесткие изменения случаются, а когда я делаю merge я всегда проверяю что функциональность сохранила работоспособность.