Как правильно использовать django-allauth с deliciouspie?

Я пишу приложение Django, которое использует django-allauth для интеграции с Facebook и использует django-tastypie для бэкэнда для приложения iOS. Приложение для iOS будет использовать собственный SDK Facebook для iOS. Я хотел бы иметь возможность регистрироваться и проверять как пользователей Facebook, так и пользователей, не являющихся пользователями Facebook, из приложения для iOS в дополнение к веб-сайту.

Проблема в том, что у django-allauth, похоже, нет API, к которому можно получить доступ извне. Кажется, единственный чистый способ подключиться к функциональности allauth — это использовать теги шаблона Django. Есть ли способ показать эту функциональность для использования с deliciouspie?

Django-allauth имеет открытый исходный код, поэтому я попытался разобрать код. Моя первоначальная идея состоит в том, чтобы аутентифицировать пользователей на стороне iOS с помощью собственного SDK Facebook, а затем вручную заполнить информацию для SocialAccount, SocialToken и добавить SocialAccount в SocialApp (все это модели django-allauth). Однако это кажется довольно хакерским решением. Мне бы хотелось, чтобы все эти модели можно было безошибочно создавать с идентификатором Facebook или чем-то подобным.

Обновление: на GitHub. По сути, пока нет встроенного функционала. Я собираюсь создать собственное решение, которое работает только с Facebook (потому что это все, что я использую в своем приложении). Я опубликую, что я сделал здесь позже, если это сработает.


person abeinstein    schedule 13.08.2013    source источник


Ответы (2)


Беглый взгляд на django-allauth показывает, что они используют модель SocialAccount для хранения данных о конкретном методе аутентификации и типе социальной учетной записи.

Вам необходимо создать конечную точку API на основе модели SocialAccount. Вам нужно передать туда переменные, такие как: тип учетной записи (facebook, локальный, твиттер и т. д.), дополнительные переменные аутентификации, необходимые поставщикам социальной аутентификации. Затем в своем коде вы можете создавать экземпляры модели SocialAccount, передавать данные, полученные от вызова конечной точки API, и запускать соответствующий вызов аутентификации через django-allauth. Наконец, вы должны вернуть результат вашего вызова аутентификации.

Я не вижу большой причины использовать django-allauth только для локальной/facebook-аутентификации, с небольшими усилиями вы можете получить целый ряд социальных провайдеров аутентификации.

person nickzam    schedule 17.10.2013

Я использовал библиотеку requests для работы с facebook API, и она отлично работает, я думаю, что ни один плагин социального входа для Django не работает для других, кроме автора, если вы хотите сделать что-то серьезное.

PS. Я использовал django-rest-framework для создания серверной части остальных мобильных приложений, включая вход в локальную учетную запись и вход в социальные сети.

person Cloudream    schedule 01.09.2013