intro appli facebook_v1.1

38
Appli Facebook Créez une application intégrée à facebook…

Upload: wundermantest-testwunder

Post on 07-Apr-2017

273 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Intro appli facebook_v1.1

Appli FacebookCréez une application intégrée à facebook…

Page 2: Intro appli facebook_v1.1

Sommaire•Création de l’application dans facebook•Langages pour facebook (PHP, FBML,

FQL)•Includes (img, script, css)•Envoi de mail/notification•Statistiques•Consoles de test•Liens

Page 3: Intro appli facebook_v1.1

Intro•Objectif : créer une application intégrée au

site de facebook, accessible depuis le catalogue par les utilisateurs identifiés et accédant à leur profil.▫Application codée en PHP▫Pages imbriquées dans l’interface de facebook,

appelées canevas

•Première étape : créer l’application dans facebook

Page 4: Intro appli facebook_v1.1

Activer le mode développeur•Pour la première application :

▫http://www.facebook.com/developers/

Page 5: Intro appli facebook_v1.1

Création de l’application• http://www.facebook.com/developers/ ->

Page 6: Intro appli facebook_v1.1

Champs indispensables• Configuration -> Onglet :

• Canvas Page URL : correspond a l’url permettant aux utilisateurs d’accéder à l’application.

• Canvas Callback URL : adresse du serveur où sont placés les fichier PHP (ex : http://212.157.202.137/facebook/). Important : Terminer par un slash « / », sinon on aura http://212.157.202.137/facebookindex.php par exemple.

Page 7: Intro appli facebook_v1.1

Récapitulatif des applis

• Cette page permet de gérer toutes les applications qui ont été créées.

Page 8: Intro appli facebook_v1.1

Langages pour facebook

• PHP : Code classique pour générer le code HTML + classes spécifiques pour accéder à l’API facebook

• FBML : Balises type HTML pour la mise en page• FQL : Requêtes type SQL pour accéder aux tables

mises à disposition par facebook

• Non traités dans ce document :▫XFBML▫FBJS

Page 9: Intro appli facebook_v1.1

PHP•Code PHP classique dans lequel on peut

appeler des fonctions propres à facebook afin d’accéder à des données sur les utilisateurs

•Deux dossiers à placer dans le site (par ex : dans /include/) :▫php▫footprints

•Un fichier à inclure dans le code PHP :▫require_once('include/php/facebook.php');

Page 10: Intro appli facebook_v1.1

PHP•Créer l’objet facebook permettant

d’accéder aux fonction de l’API•Pré requis :

▫Clé API▫Clé secrète

Fournis sur la page de l’application : http://www.facebook.com/developers/apps.php

Page 11: Intro appli facebook_v1.1

PHP

• Création de l’objet :▫$facebook = new Facebook($cleAPI,$cleSecrete);

• Cet objet facebook est nécessaire sur toutes les pages où l’on souhaite accéder à des données du site

• Utilisation de $facebook, exemple :▫$fb_user = $facebook->require_login();

(force l’utilisateur à être loggé pour accéder à la page, et renvoi son id)

Page 12: Intro appli facebook_v1.1

FBML•Balises de type HTML interprétées par

facebook afin d’afficher des éléments de design sur facebook. Exemples :▫<fb:name uid="$tagger" />

Affiche le prénom et le nom de l’utilisateur possedant l’id, dans un lien redirigeant vers son profil personnel

▫Onglets intégrés au design :▫ <fb:tabs>

<fb:tab-item href="myphotos.php" title="My Photos" selected="true"/> <fb:tab-item href="recentalbums.php" title="Recent Albums" />

▫ </fb:tabs>

Page 13: Intro appli facebook_v1.1

FBML•Catégories de tag FBML fournis par

facebook pour le design de l’application :

User/Groups Platform Internationalization

Message Attachments Page Navigation

Profile-specific Tools Status Messages Notifications and Requests

Visibility on Profile Misc Editor Display Dialog

Embedded Media Forms Additional Permissions Wall

Page 14: Intro appli facebook_v1.1

FQL•Langage de requêtes sur les tables de

facebook

•Principales différences avec MySQL :▫« SELECT * » interdit -> lister tous les

champs▫Pas de jointure, toujours une seule table

dans le FROM (utiliser IN)▫Pas de : JOIN, ORDER BY, GROUP BY,

LIMIT

Page 15: Intro appli facebook_v1.1

FQL•Tables accessibles :

album friend_request note standard_user_info

comment friendlist page status

cookies friendlist_member page_admin stream

connection group page_fan stream_filter

event group_member permissions user

event_member link photo

friend metrics photo_tag

Page 16: Intro appli facebook_v1.1

FQL•Champs accessibles pour l’utilisateur (table user)

uid ID de l’user

first_name Prénomlast_name Nom de famillename Nom complet

pic_small URL de l’image du profil (50x150 max)

pic_square URL de l’image du profil (50x50 max)

pic URL de l’image du profil (100x300 max)

affiliations Les réseaux de l’userprofile_update_time

Temps écoulé depuis la dernière mise à jour du profil (0 si >3 jours)

timezone Timezone de l’userreligion Religion de l’userbirthday Anniversaire (format affichage)birthday_date Anniversaire (format machine)

sex Sexehometown_location

Lieu de naissance (tableau [ville, région, pays])

meeting_sex Sexe recherché pour des rencontres

meeting_for Raison de la recherche de rencontres

relationship_status

Situation familiale

significant_other_id

ID du partenaire

political Tendances politiquescurrent_location

Lieu d’habitation actuel (tableau [ville, région, pays])

activities Activitésinterests Centres d’intérêtis_app_user Indique si l’utilisateur utilise

actuellement l’application

Page 17: Intro appli facebook_v1.1

music Goûts musicaux

tv Séries et émissions favoritesmovies Films favorisbooks Livres favoris

quotes Citations favorites

hs_info Lycées fréquentéseducation_history

Établissement d'enseignement supérieur fréquentés

work_history Historique des emploisnotes_count Nombre de notes écrites par l’userwall_count Nombre de post sur le murstatus Status courantonline_presence

En ligne, Absent, Hors ligne, ou Erreur

FQL•Champs accessibles pour l’utilisateur (table user)

locale Pays duquel l’utilisateur accède à l’appli

proxied_email

Email crypté accessible que par l’appli

profile_url URL du profilemail_hashes

Série d’emails crypté en crc32 et md5

pic_small_with_logo

Idem pic_small avec logo facebook

pic_big_with_logo

Image du profil (200x600px max) avec logo facebook

pic_square_with_logo

Idem pic_square avec logo facebook

allowed_restrictions

Types de restrictions appliqués a l’utilisateur (ex : alcool)

verified Indique si Facebook a vérifié l’utilisateur

profile_blurb Brève description affichée sous l’image du profil

Page 18: Intro appli facebook_v1.1

FQL

•Exemple d’éxécution d’une requête FQL avec PHP

$uid = $facebook->require_login();$req = "SELECT first_name FROM user WHERE uid=$uid";$res = $facebook->api_client->fql_query($req);$user_name = $res[0]["first_name"];

Page 19: Intro appli facebook_v1.1

Accès aux données• Lors de la première visite de l’utilisateur sur

l’application facebook, cette fenêtre apparait :

• C’est seulement après avoir cliqué sur « Autoriser » que l’on pourra accéder aux données par les méthodes décrites précédemment

Page 20: Intro appli facebook_v1.1

Includes•Insertion d’images :

▫Chemin relatif interdit : mettre le chemin complet sur l’adresse du serveur <img src="http://172.22.224.222/sondages/img/site/bar.png"

/>

•Insertion de script :▫Chemin complet également :

<script src="http://foo.com/bar.js"></script>▫ Versionning nécessaire à cause de la mise en cache

automatique (voir slide suivant)

Page 21: Intro appli facebook_v1.1

Includes•Insertion de Feuille de style CSS :

▫ Peut être fait avec un link html : <link rel="stylesheet" type="text/css" media="screen"

href="http://yourapp.com/stylesheets/style.css?v=1.0" /> Cette solution nécessite de changer la version à chaque changement

à cause de la mise en cache. Peut être fait automatiquement avec : $ts = filemtime("bar.js"); print "<script src=\"http://foo.com/bar.js?ts=$ts\"></script>";

▫ Sinon, inclure avec PHP : echo "<style>"; echo htmlentities(file_get_contents('style/facebook.css', true)); echo "</style>";

• (http://wiki.developers.facebook.com/index.php/Include_files)

Page 22: Intro appli facebook_v1.1

Envoi de mail

•Il est impossible d’obtenir l’adresse email de l’utilisateur

•Il est cependant possible d’envoyer un mail à l’utilisateur via l’application.

Page 23: Intro appli facebook_v1.1

Envoi de mail$head = "Entête du mail";$bodytext = "Corps simple utilisé si les balises ne fonctionnent pas";$bodyfbml = "<b>Corps</b> utilisant les balises HTML et/ou FBML";$result = $facebook->api_client->notifications_sendEmail($fb_uid,$head,$bodytext,

$bodyfbml);echo "Email envoyé";

• $fb_uid est l’id de l’utilisateur ou un liste d’id séparé par des virgules• Il faut que l’utilisateur ai autorisé l’application et l’envoi de mail par

l’application pour recevoir les emails envoyés par cette méthode• On peut lui permettre facilement d’accepter l’envoi de mail grace à :

• <fb:prompt-permission perms='email'>Accepter</fb:prompt-permission>• En cliquant sur le lien généré par cette balise, une pop-up permet à l’utilisateur

d’accepter ou de refuser l’envoi de mail par l’application, une fois cette action effectué, le lien n’apparaitra plus.

Page 24: Intro appli facebook_v1.1

Envoi de notifications•Les notifications sont des petits messages

qui peuvent être envoyés à n’importe quel utilisateur sans qu’il ai nécessairement ajouté et autorisé l’application.

•Elles apparaissent en bas à droite de l’écran de l’utilisateur et dans sa page de notifications

Page 25: Intro appli facebook_v1.1

Envoi de notifications

•Les notifications peuvent être envoyé à n’importe quel utilisateur de facebook, les envois effectués par l’application sont donc contrôlés par le spam control de facebook, dont le calcul est décrit ici : ▫ http://www.facebook.com/topic.php?

uid=2205007948&topic=13262&start=30&hash=0ce1d00dde55ae7fc1d6f206621bdfc4#post71908

Page 26: Intro appli facebook_v1.1

Envoi de notifications

•Méthode :

▫ $text = "L’application X vous envoie une <b>invitation</b>";▫ $type = "app_to_user";▫ $result = $facebook->api_client->notifications_send($fb_uid,

$text,$type);

Page 27: Intro appli facebook_v1.1

Mails / Notifications

•Le nombre d’envoi de mails et de notifications par jour par application est limité. Il est possible de connaitre ces limites grâce à la méthode de l’API :▫Admin.getAllocation

Page 28: Intro appli facebook_v1.1

Propagation de l’application•Il est très simple d’insérer l’interface

d’invitation à une invitation. Avec 2 balises FBML, on affiche la liste des amis de l’utilisateur dans laquelle il peut sélectionner ceux avec qui il souhaite partager l’application, puis envoyer automatiquement l’invitation

• Code FBML sur le slide suivant

Page 29: Intro appli facebook_v1.1

Propagation de l’application<fb:request-form

action="index.php" method="POST" invite="true" type="YOUR APP NAME" content="Your text goes here.

<?php echo htmlentities("<fb:req-choice url=\"YOUR CANVAS URL\" label=\"Authorize My Application\"") ?>" >

<fb:multi-friend-selector showborder="false" actiontext="Invite your friends to use YOUR APP

NAME."> </fb:request-form>

Page 30: Intro appli facebook_v1.1

Statistiques

•Facebook fournit des statistiques de fréquentation, de performance et d’interaction avec les utilisateur pour chaque application.

Page 31: Intro appli facebook_v1.1

Statistiques•Statistiques fournies par facebook

▫Exemple de graphique (Pages visionnées)

Page 32: Intro appli facebook_v1.1

Statistiques proposéesUtilisationUtilisateurs actifs (engagement)

Utilisateurs actifs (API)

Nombre de pages vues de canevas

Format de page unique

Temps moyen pour une requête HTTP pour les pages de canevas (ms)Temps d’affichage moyen des pages FBML de démo (ms)Blocage / Déblocage unique

Appels API / Appels API uniques

FonctionnalitésPage Canevas : Voir / Erreur

Email : EnvoyéRapport : Rapport d’abus de confidentialitéAutoriser l’application à envoyer des emails : S’abonner / Se désinscrireRequête Traité : Accepter / Ignorer / BloquerDialogue libre (ami) : Ignorer / ConfirmerSignets : Ajouter / Supprimer

Onglets : Ajouter / Supprimer

Page 33: Intro appli facebook_v1.1

Autres statistiques•Liste des requêtes HTTP :

• Attributions basées sur l'interaction avec les utilisateurs :

Page 34: Intro appli facebook_v1.1

Autres statistiques•Réactions des utilisateurs

Page 35: Intro appli facebook_v1.1

Consoles de test

•Facebook fournit deux consoles permettant de tester les fonctions de l’API ou les balises FBML.

Page 36: Intro appli facebook_v1.1

Consoles•Console de test

d’API

Page 37: Intro appli facebook_v1.1

Consoles•Console de test

FBML

Page 38: Intro appli facebook_v1.1

Liens• Librairie client facebook :

▫ http://svn.facebook.com/svnroot/platform/clients/packages/facebook-platform.tar.gz • Récapitulatif des applications :

▫ http://www.facebook.com/developers/apps.php • Wiki Documentation :

▫ http://wiki.developers.facebook.com/index.php/Main_Page • Tables FQL :

▫ http://wiki.developers.facebook.com/index.php/FQL_Tables • Descriptions données statistiques :

▫ http://wiki.developers.facebook.com/index.php/Application_Metrics_-_Feature_Events • Console de test :

▫ http://developers.facebook.com/tools.php

• Description de l’anatomie d’une application :▫ http://developers.facebook.com/get_started.php?tab=anatomy

• Principes de base▫ http://developers.facebook.com/get_started.php?tab=principles

• Librairie .NET :▫ http://facebook.codeplex.com/