2015-08-18 3 views
0

Мне нужен два разных процесса входа в систему на моем сервере django.Пользовательский конвейер для социальной сети Cordova

  • Логин для пользователей сайта (я уже это)
  • Логин для пользователей приложения - Кордова InAppBrowser

Войти трубопровод для пользователей приложения также должны генерировать маркер и вернуть его в Кордова приложение , Как мне нужно создать параллельный конвейер.

ответ

5

Итак, у вас есть два типа пользователей в вашем приложении:

1. User 
2. CordovaUser 

Вам нужны две различные ссылки для двух разных пользователей и как-то вы должны знать, в трубопроводе, что один из них CordovaUser.

Во-первых, в настройках, выполните следующие действия:

FIELDS_STORED_IN_SESSION = ['user_type'] 

то ссылки будут выглядеть следующим образом:

1. <a href="{% url 'social:begin' 'facebook' %}">Login as User</a> 
2. <a href="{% url 'social:begin' 'facebook' %}?user_type=cordova">Login as CordovaUser</a> 

затем настроить create_user выглядеть примерно так:

def create_user(strategy, details, user=None, *args, **kwargs): 
    if user: 
     return {'is_new': False} 

    fields = dict((name, kwargs.get(name) or details.get(name)) 
       for name in strategy.setting('USER_FIELDS', 
              USER_FIELDS)) 
    if not fields: 
     return 

    user_type = strategy.session_get('type') 

    if user_type != 'cordova': 
     return { 
      'is_new': True, 
      'user': strategy.create_user(**fields) 
     } 
    else: 
     return { 
      'is_new': True, 
      'user': create_cordova_user(**fields) 
     } 

, тогда создайте этот метод create_cordova_user, и все готово.

Надеюсь, это поможет!

+0

Спасибо за отличный ответ !!! Еще кое-что. Как вернуть токен пользователю кордовы? Я мог бы добавить токен к URL-адресу перенаправления в качестве параметра GET. Как указать перенаправление? – Ajoy

+0

@Ajoy, вы имеете в виду 'access_token' пользователя? Если это так, вы можете получить его так: 'user.social_auth.get (provider = 'facebook'). Access_token'. Если нет, пожалуйста, объясните, что именно вы пытаетесь сделать? –

+0

Не то. Сервер будет генерировать токен. Но как я могу передать его в приложение cordova? Я где-то читал, что он может быть привязан к обратному результату успеха, так что браузер Cordova может извлечь маркер, созданный сервером. – Ajoy

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