Django Social Auth и авторизация в приложениях для ВКонтакте: пример
23 августа 2012
Пример добавлен в мой fork и в главную ветку вот в этом pull request.
Пример добавлен в мой fork и в главную ветку вот в этом pull request.
Comments closed
Ответы на: Django Social Auth и авторизация в приложениях для ВКонтакте: пример
adw0rd пишет:
16 сентября, 2012
Привет, я что-то не могу настроить авторизацию через вконтакте для своего проекта.
Смотрю сюда https://github.com/krvss/django-social-auth/blob/master/doc/backends/vkontakte.rst и вижу:
> VK_APP_ID = »
> VK_API_SECRET = »
Смотрю в https://github.com/krvss/django-social-auth/blob/master/social_auth/backends/contrib/vkontakte.py и вижу
> setting(‘VKONTAKTE_APP_ID’)
> setting(‘VKONTAKTE_APP_SECRET’)
И не пойму это нормально или документация устарела?
krvss пишет:
17 сентября, 2012
Привет!
Это нормально7 В моих сеттингах вот так:
VKONTAKTE_APP_ID = ‘id’
VKONTAKTE_APP_SECRET = ‘secret’
VK_APP_ID = VKONTAKTE_APP_ID
VK_API_SECRET = VKONTAKTE_APP_SECRET
adw0rd пишет:
17 сентября, 2012
В моих тоже теперь, но может это в документацию добавить?
krvss пишет:
17 сентября, 2012
Вообще все равно какие именно имена использовать, я об этом писал в блоге — добавлю при случае в доки.
vladimir пишет:
20 марта, 2013
У меня падает с ошибкой WrongBackend при таких шагах:
1. Авторизуюсь с помощью Vkontakte
2. При редиректе на /form/, там где просит ввести имя, я ввожу имя администратора и вылетает ошибка
Подскажите пожалуйста как мне правильно обработать этот момент, я пока не совсем понимаю работу этой авторизации.
krvss пишет:
20 марта, 2013
Нужны подробности:
1. Какой именно backend используется в настройках? Тот, который прописан в settings.py по умочанию?
2. По какой системе авторизуетесь — OpenAPI, OAuth2?
3. Указаны ли VKONTAKTE_APP_ID и VKONTAKTE_APP_SECRET?
Редирект на /form/ вообще-то сделан только для примера, в рельной жизни его использовать не обязательно (и даже наверное нежелательно).
vladimir пишет:
20 марта, 2013
в настройках оставил 2 backend’а:
‘social_auth.backends.contrib.vkontakte.VKontakteOAuth2Backend’,
‘django.contrib.auth.backends.ModelBackend’,
авторизуюсь по OAuth2, VKONTAKTE_APP_ID и VKONTAKTE_APP_SECRET указаны. Вообще авторизация проходит нормально, если на /form/ указать имя, которого еще нет в базе в таблице auth_user. Если же я указываю имя суперюзера, падает с ошибкой.
krvss пишет:
20 марта, 2013
А вы планируете использовать этот pipeline в реальной жизни? Ну, который выводит form.
vladimir пишет:
20 марта, 2013
Пока не могу ответить на этот вопрос, я пока не вижу решения того момента, как будет происходить авторизация, если нет имени пользователя.
Вот пришел пользователь, «контакт» подтвердил, что это его пользователь и отдал мне какие-то данные. А что дальше делать, как создать этого пользователя в джанговской таблице? Я пока не могу понять. Насколько я понял форма как раз для того, чтобы взять имя пользователя и создать его. Или может быть просто рандомно генерить это самое имя пользователя? Вы не могли поделиться своим решением этого момента? Или может я чего-то не понимаю или понимаю не правильно?
krvss пишет:
20 марта, 2013
Пользователь будет создан в джанговской таблице автоматом (эта опция в DSA включена по умолчанию), никаких дополнительных усилий для этого предпринимать не нужно. Форма из примера — исключительно для иллюстрации возможностей pipeline (некоего постпроцессинга, если например хочется e-mail обязательно узнать до регистрации или еще чего-то накрутить специального).
vladimir пишет:
21 марта, 2013
спасибо за помощь, вроде заработало.
Насколько я понял, проблема была в том, что в settings.py и в settings_local.py в SOCIAL_AUTH_PIPELINE за получение имени пользователя отвечают вот эти 2 строчки:
'app.pipeline.redirect_to_form',
'app.pipeline.username',
а они не отдавали имени. Как только я поставил вот эту строчку:
'social_auth.backends.pipeline.user.get_username',
все заработало. Причем такие настройки и в вашем форке и в мастер версии.
vladimir пишет:
21 марта, 2013
сейчас перепроверил в вашей версии как раз нормальные настройки, а в мастер ветке как раз в примере стоят pipeline, которые дают ошибку
krvss пишет:
21 марта, 2013
Да, форму показывает как раз app.pipeline.redirect_to_form. Вообще конечно я бы советовал сделать тикет про это в основной ветке, видимо имя админа провоцирует какую-то ошибку.
vladimir пишет:
20 марта, 2013
совсем забыл уточнить, все это происходит на примере приложения