Итак, у вас есть два типа пользователей в вашем приложении:
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
, и все готово.
Надеюсь, это поможет!
Спасибо за отличный ответ !!! Еще кое-что. Как вернуть токен пользователю кордовы? Я мог бы добавить токен к URL-адресу перенаправления в качестве параметра GET. Как указать перенаправление? – Ajoy
@Ajoy, вы имеете в виду 'access_token' пользователя? Если это так, вы можете получить его так: 'user.social_auth.get (provider = 'facebook'). Access_token'. Если нет, пожалуйста, объясните, что именно вы пытаетесь сделать? –
Не то. Сервер будет генерировать токен. Но как я могу передать его в приложение cordova? Я где-то читал, что он может быть привязан к обратному результату успеха, так что браузер Cordova может извлечь маркер, созданный сервером. – Ajoy