2016-01-28 1 views
1

J'essaie d'obtenir la variable sociale de session de mon modèle. J'ai 2 boutons séparés pour Inscription et Connexion à l'aide type_login clé:SOCIAL_AUTH_FIELDS_STORED_IN_SESSION dans python-social-auth est toujours Aucun dans mon pipeline personnalisé

<a href="{% url 'social:begin' 'facebook' %}?next={{ request.path }}?login_type=1"><img src='img.png'> </a> 

<a href="{% url 'social:begin' 'facebook' %}?next={{ request.path }}?login_type=2"><img src='img2.png'></a> 

Dans mes paramètres:

SOCIAL_AUTH_FIELDS_STORED_IN_SESSION = ['login_type'] 

J'ai aussi essayé avec:

FIELDS_STORED_IN_SESSION = ['login_type'] 

mon pipeline personnalisé:

SOCIAL_AUTH_PIPELINE = (
'social.pipeline.social_auth.social_details', 
'social.pipeline.social_auth.social_uid', 
'social.pipeline.social_auth.auth_allowed', 
'social.pipeline.social_auth.social_user', 
'FBAuth.facebook.check_if_exists',  
'social.pipeline.user.get_username', 
'social.pipeline.user.create_user', 
'social.pipeline.social_auth.associate_user', 
'social.pipeline.social_auth.load_extra_data', 
'social.pipeline.user.user_details', 
) 

facebook.py:

from django.conf import settings 
from django.shortcuts import redirect, HttpResponse 

def check_if_exists(strategy, request, *args, **kwargs): 
    login_type = strategy.request.GET.get('login_type') 
    #login_type = strategy.session_get('key') (I tried all cases) 
    #login_type = request['login_type'] 
    #login_type = strategy.request['login_type'] 
    logger.debug("is_new parameter is %s", kwargs['is_new']) 
    logger.debug("login_type is %s", login_type) 
    if kwargs['is_new']: 
     if login_type == 1: 
      return redirect('/', message ='Specified social account is not yet associate with any existent user, try to Sign up first') 
    else: 
     if login_type == 2: 
      return redirect('/', message = 'User for this account is already exist, try to login') 
    return None 

mais, dans tous les cas dans mes journaux, je vois toujours « Aucun type_login est »

Qu'est-ce qui ne va pas?

Répondre

0

Il semblerait que vos paramètres GET soient incorrects. Vous devez changer

<code><pre>?next={{ request.path }}?login_type=1</pre></code> 

à

<code><pre>?next={{ request.path }}&login_type=1</pre></code>