Postez un statut sur facebook depuis Django

Ce tutoriel se décompose ainsi :

  1. Création de l’environnement virtuel pour le projet
  2. Création et configuration du projet
  3. Création d’une application facebook
  4. Autoriser l’application Facebook à poster sur votre mur
  5. Autoriser le projet Django à accéder à l’application Facebook
  6. 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.

Laisser un commentaire