Ce tutoriel se décompose ainsi :
- Création de l’environnement virtuel pour le projet
- Création et configuration du projet
- Création d’une application facebook
- Autoriser l’application Facebook à poster sur votre mur
- Autoriser le projet Django à accéder à l’application Facebook
- Création des vues, templates et routes du projet
Création de l’environnement virtuel pour le projet
On commence tout d’abord par installer pip et virtualenv
sudo apt-get install pip sudo pip install virtualenv
On crée un environnement virtuel pour notre projet
virtualenv post_on_fb
On se connecte sur l’environnement virtuel
cd post_on_fb source bin/activate
On installe les paquets requis
pip install Django==1.8 pip install python-social-auth pip install facebook-sdk
Création et configuration du projet
On crée le projet
django-admin.py startproject post_on_fb_project
On crée une app
python manage.py startapp post_on_fb_app
On ajoute les applications ‘post_on_fb_app‘ et ‘social.apps.django_app.default‘ dans INSTALLED_APPS présent dans settings.py ainsi que le code ci dessous afin d’autoriser l’authentification facebook pour un utilisateur
AUTHENTICATION_BACKENDS = ( 'social.backends.facebook.FacebookOAuth2', 'django.contrib.auth.backends.ModelBackend', )
On teste le projet
cd post_on_fb_project python manage.py runserver
Si vous voyez affiché « Django works », nous pouvons continuer
Création d’une application facebook
Rendez-vous sur https://developers.facebook.com
Cliquez ensuite sur MyApp -> Add a new app.
Voici les différents paramètres de l’app à mettre en place.
- Platform : Site web
- Display Name : AppName
- AppDomain : localhost
- SiteURL : http://localhost:8000/
- Deauthorize Callback URL : http://localhost:8000/complete/facebook/
- Allow API Access to App Settings : Yes
- Client OAuth Login : Yes
- Embedded browser OAuth Login : Yes
- Valid OAuth redirect URIs : http://localhost:8000/
Autoriser l’application Facebook à poster sur votre mur
Cliquez sur Graph API Explorer
Testez l’envoi de notification depuis Graph API Explorer
Sélectionnez « Post » puis « Add a field » et insérez => message : Super notification.
Si un id vous est retourné le message a été envoyé sur votre mur.
Sélectionnez l’application créé dans le menu du haut.
Cliquez sur Get token puis Get access token
Les permissions suivantes doivent être cochés :
user_status, user_post, manage_notifications, publish_actions
Autorisez le projet Django à accéder à l’application Facebook.
SOCIAL_AUTH_FACEBOOK_KEY = 'APP_ID' SOCIAL_AUTH_FACEBOOK_SECRET = 'APP_SECRET' SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/home/' SOCIAL_AUTH_LOGIN_URL = '/'
Création des vues
Pour cela, nous allons utiliser 2 vues fournies par l’app social pour la connexion et la deconnexion.>
Commençons par les vues nécessaires
def login(request): return render(request, 'django_social_app/login.html') @login_required(login_url='/') def home(request): if request.method == "POST": notif = request.POST['notif'] users = UserSocialAuth.objects.all() user = users[0] graph = facebook.GraphAPI(user.extra_data['access_token']) messages.add_message(request, messages.SUCCESS, 'Le message a été envoyé',) graph.put_object(parent_object='me', connection_name='feed',message=notif) return render(request,'django_social_app/home.html') def logout(request): auth_logout(request) return redirect('/')
Création des templates
Définissons maintenant nos templates
login.html
{% if user and not user.is_anonymous %} <a>Hello, {{ user.get_full_name }}!</a> <a href="/home/">Poster un statut Facebook</a> <a href="logout">Logout</a> {% else %} <a href="{% url 'social:begin' 'facebook' %}?next={{ request.path }}">Connexion avec Facebook</a> {% endif %}
home.html
<h1>Poster un statut sur votre page Facebook</h1> {% if messages %} <ul class="messages"> {% for message in messages %} <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li> {% endfor %} </ul> {% endif %} <form action="/home/" method="POST"> {% csrf_token %} <label for="notif">Notification :</label><input type="text" name="notif" /> <input type="submit" value="Envoyer" /> </form> <p><a href="/logout/">Logout</a>
Configuration des routes
Maintenant mettons en place les routes pointant vers nos vues
Le fichier urls.py à la racine du projet se compose de 4 routes.
from django.conf.urls import patterns, include, url urlpatterns = patterns('', url('', include('social.apps.django_app.urls', namespace='social')), url(r'^$', 'django_social_app.views.login'), url(r'^home/$', 'django_social_app.views.home'), url(r'^logout/$', 'django_social_app.views.logout'), )
Upi !!, vous avez terminé le tutoriel.
Maintenant, connectez-vous avec votre compte Facebook depuis Django puis saisissez un message. Il sera envoyé sur votre mur.