2010-12-08 33 views
0

Je veux me connecter via twitter, facebook, openid, yahoo, google en utilisant une seule application.Je ne peux pas trouver le bouton facebook en utilisant django-socialauth

Je choisis django-socialauth

je lis ce Artile: django-socialauth-login-via-twitter-facebook-openid-yahoo-google/

mais quand je télécharge le code et l'exécuter, je ne peux pas trouver le bouton facebook,

Que puis-je faire ?

grâce

ceci est mon image de démonstration:

alt text

et c'est la démonstration de l'auteur: here

alt text

Répondre

0

J'ai donc dû modifier légèrement leur code de vue pour que cela fonctionne. En regardant socialauth.views, vous voyez que nous obtenons l'attribut FACEBOOK_APP_ID de notre fichier de paramètres. C'est bon.

En regardant le socialauth/login_page.html modèle, il y a une section:

{% if FACEBOOK_APP_ID %} 
    <div id="facebook"> 
    <p><fb:login-button perms="{{ login_button_perms }}"></fb:login-button></p> 
    </div>  
{% endif %} 

Maintenant, cela semble être l'accès à la FACEBOOK_APP_ID variable. Bien sûr, nous obtenons cet attribut dans socialauth.views. Cependant, nous avons un problème. Nous n'exposons jamais la variable au modèle (ce qui doit être fait manuellement, souvenez-vous?). Donc, nous remplaçons le vieux vue login_page:

def login_page(request): 
    return render_to_response('socialauth/login_page.html', 
          {'next': request.GET.get('next', LOGIN_REDIRECT_URL)}, 
          context_instance=RequestContext(request)) 

avec:

def login_page(request): 
    return render_to_response('socialauth/login_page.html', { 
    'next': request.GET.get('next', LOGIN_REDIRECT_URL), 
    'FACEBOOK_APP_ID': FACEBOOK_APP_ID, 
    }, 
    context_instance=RequestContext(request)) 

Notez que la seule différence est dans la ligne 'FACEBOOK_APP_ID': FACEBOOK_APP_ID.