2010-10-19 45 views
7

Soit ma recherche google m'a complètement quitté, soit il n'y a pratiquement aucune documentation/tutoriels pour django-socialregistration. Dommage, car il me semble que c'est une application assez sympa. Grâce à quelques essais et erreurs, j'ai réussi à le faire fonctionner principalement sur mon site.Facebook Connect: capture des données utilisateur avec django-profiles et django-socialregistration

Ma question, en utilisant django-socialregistration comment puis-je demander l'autorisation pour le nom de l'utilisateur facebook complète, ville actuelle et la date de naissance et le stocker dans ma table UserProfile (qui est mon AUTH_PROFILE_MODULE pour les profils de django-) dans Django lors de l'inscription? De plus, comment puis-je publier sur le mur de l'utilisateur à partir de Django une fois la connexion établie?

Actuellement, lorsque je clique sur le bouton "Se connecter avec Facebook", la connexion Facebook est établie, un nouvel utilisateur Django est créé et l'utilisateur est connecté avec ce compte Django. Cependant, aucun UserProfile n'est créé et aucune donnée de profil Facebook n'est enregistrée.

Les gourous facebook connectés veulent-ils aider le poney Django à rejoindre Facebookland?

configuration:
- Django 1.2.1
- python 2.5.2
- django-socialregistration 0.4.2
- django-enregistrement
0,7 - django-profils 0,2

alt text
"Monsieur monsieur, pouvez-vous s'il vous plaît m'aider à trouver le Facebookland magique?"

Répondre

8

En facebook_js.html vous devez ajuster la ligne suivante, en décommentant articles que vous avez besoin pour obtenir de FB:

 FB.login(handleResponse/*,{perms:'publish_stream,sms,offline_access,email,read_stream,status_update,etc'}*/); 

Puis, en FacebookMiddleware vous pouvez extraire les données de fb_user, comme celui-ci :

 facebook.GraphAPI(fb_user['access_token']).get_object('me') 
+0

Vous avez fait poney Django heureux. Très heureux. – mitchf

+1

Pour clarifier votre deuxième point, le FacebookMiddleware ajoute les données de l'utilisateur Facebook à la demande, de sorte que vous pouvez obtenir les informations de profil de l'utilisateur comme ceci: fbuser = request.facebook.graph.get_object ("moi"). Ensuite, vous pouvez obtenir des données comme le prénom de l'utilisateur: fbuser ['prénom'], genre: fbuser ['gender'] ou ville/état: fbuser ['location'] ['name'] – mitchf

+0

Pour poster depuis Django vers Facebook: request.facebook.graph.put_object ("moi", "feed", message = "Un message de Django!") – mitchf

3

FWIW, je viens de découvrir cette pépite modérément utile de l'auteur de l'application enterré dans la section « questions » sur github:

question de « Tolano »:

J'ai un modèle de profil associé aux utilisateurs, et à chaque fois que l'utilisateur est créé le profil doit être créé aussi. Devrions-nous créer une nouvelle vue de configuration personnalisée à cette fin?

Je rencontre plusieurs problèmes car la documentation est mauvaise. Merci beaucoup.

réponse de "flashingpumpkin":

Oui. Idéalement, vous écrasez la vue d'installation avec la vôtre. Une méthode plus simple pour ajuster ce qui est fait lors de la création de l'utilisateur consiste à passer un formulaire personnalisé dans la vue de configuration. Vous le ferez en remplaçant l'URL standard.

1

Voici une autre pépite pertinente (source: http://github.com/flashingpumpkin/django-socialregistration/issues/closed#issue/7) Assez de ces derniers et cette page deviendront de facto la documentation django-socialregistration;)

question "girasquid":

Peut-être que je manque quelque chose, mais je suis coincé ici - y a-t-il un moyen de 'connecter' des comptes sur d'autres sites à un utilisateur déjà existant? Par exemple, je me suis déjà inscrit sur le site Really Awesome, donc je n'ai pas besoin de m'inscrire à nouveau - mais je voudrais connecter mes comptes Facebook et Twitter pour que je puisse me connecter avec ceux-ci comme bien.

Existe-t-il un moyen de le faire déjà? S'il n'y a pas ... comment le ferais-je?

réponse de "flashingpumpkin":

Oui il y a. Utilisez simplement les mêmes balises de gabarit pour Facebook Connect que pour l'enregistrement. Selon que l'utilisateur est déjà connecté ou non, il créera uniquement l'objet FacebookProfile et le liera à l'utilisateur existant - ou créera à la fois l'objet Utilisateur et l'objet FacebookProfile.

Jetez un oeil ici:
http://github.com/flashingpumpkin/django-socialregistration/blob/master/socialregistration/templates/socialregistration/facebook_button.html et

http://github.com/flashingpumpkin/django-socialregistration/blob/master/socialregistration/templatetags/facebook_tags.py