2013-05-30 5 views
7

Я строю вверх приложение, которое должно позволить пользователю зарегистрироваться/войти в систему с Facebook , а затем он должен быть в состоянии войти в систему (всегда через Facebook) на " main "Connect facebook Войти PhoneGap с Джанго allauth

Чтобы быть честным, это немного сложнее, чем это. Это потому, что я использую django-tastypie и django-allauth в главном сайте, чтобы зарегистрироваться, Логин и просмотр нашего API

В основном я хочу, чтобы пользователь мобильного приложения просматривать tastypie API (доступен только если вход и если вы пользователь в основном сайте) и предоставить ему права, чтобы добавить строки (например, заказы)

Вот что я

  • PhoneGap приложение с рабочим логином Facebook (я работаю на этом прямо сейчас)
  • Веб-сайт с django-allauth и django-tastypie, который заставляет меня регистрироваться как новый пользователь, используя учетную запись allauth's Facebook
  • Отсутствие следа на главном сайте, если мобильный пользователь делает регистрацию через Facebook (это проблема)

Я в основном путают, как я должен работать с маркерами доступа и как передать дополнительные параметры (не нужно только Infos Facebook для завершения регистрации, но некоторые пользовательские поля тоже)

Кто-нибудь получил опыт на этом или хотел бы разоблачить свой рабочий процесс?

ответ

14

Один из распространенных способов сделать вещи - оставить все функции, связанные с регистрацией, вплоть до веб-сайта. В приложении phonegap вы можете просто указать пользователю/account/login/используя In-App-Browser (IAB). IAB имеет такие события, как loadstart и exit, которые вы должны контролировать. Простой способ контролировать, был ли пользователь успешно зарегистрирован, - это перенаправить его на определенный URL-адрес, например,/accounts/login/complete /, в конце входа. Если вы прикрепляете токен к этому возвращаемому URL (как в/accounts/login/complete /? Token = 123), вы сможете разобрать этот токен в своем приложении. Вы можете просто использовать идентификатор сеанса в качестве токена.

Более безопасный способ - использовать приложение django-oauth2-provider и фактически реализовать правильное рукопожатие oauth. Обработка почти такая же. Используя IAB open/oauth/authenticate /, вас попросят войти в систему с помощью allauth, затем появится диалоговое окно подтверждения oauth2, после чего код предоставления oauth будет передан URL-адрес успеха. Вы можете выбрать этот код из телефонной заставки и использовать AJAX-вызовы из приложения phonegap, которое вы можете получить маркер доступа oauth. Btw, django-rest-framework имеет встроенную поддержку django-oauth2-provider (не знаю о tastypie).

Совершенно другой подход заключается в внедрении входа в систему Facebook в вашем мобильном приложении, полностью независимом от веб-сайта. После входа в систему вам будет передан токен доступа к Facebook. Теперь вы можете отправить этот токен на веб-сайт. Учитывая маркер, веб-сайт может получить пользователя (https://graph.facebook.com/me?access_token=...), Проверьте, известен ли этот пользователь, если он возвращает соответствующий токен/сеанс для этого пользователя, если нет, создайте учетную запись пользователя и также верните токен.

+0

Это то, что мне нужно;) Я думаю, что третий apporach - это то, что я ищу! Моя последняя проблема заключается в том, как программно создать токен сеанса для этого пользователя, но я подумаю об этом в этот момент! ;) – VAShhh

+0

Вы можете использовать 'request.session.session_key' как токен ... – pennersr

+0

о втором методе, который вы описываете (django-oauth2-provider), означает ли это, что нам не нужно будет писать какой-либо пользовательский код? Я не уверен, что правильно понял @pennersr – psychok7

Смежные вопросы