J'ai toujours eu du mal à gérer l'API de Facebook. Même si j'arrive à mes fins, je passe un temps fou à essayer de faire marcher du code, et ça me frustre à un point...
J'ai écrit mon premier article sur l'intégration de l'API Facebook en 2012, il y a plus de 3 ans. Je pense avoir joué avec bien avant. Donc cela fait quelques années que je devrais connaitre ce genre de problématique par cœur. Pourtant j'ai toujours l'impression de repartir à zéro et d'être un débutant sur le sujet.
Je reproche à Facebook d'avoir eu une doc déplorable pendant de nombreuses années (c'est mieux depuis qq temps). De plus rien en Français, c'est pas encourageant depuis le temps ! Mais je comprends, vu que ça change tous les 6 mois, ils n'ont pas envie de tout retraduire sans doute...
C'est moins le cas je pense depuis un moment, mais je me rappelle avoir écrit du code qui ne fonctionnait plus 6 mois après. Et plusieurs fois. D'où l'impression de repartir à zéro.
Cet article sera sans doute modifier dans les prochaines semaines, car pas mal de choses ne fonctionnent pas bien encore. Je vais lister ici mes expériences concernant l'intégration de l'API Facebook dans une application Cordova.
Voici plusieurs pistes :
Piste 1 : Api Facebook Officielle
Je n'arrive pas à la faire marcher. J'ai toujours des erreurs, voir pas d'erreur ce qui est pire quand l'application ne fonctionne pas. A priori je ne suis pas le seul : article. Le code getting started fonctionne sur un site web mais pas dans une appli Cordova.
Mon problème est résumé dans cet article :http://blog.reactor.fr/post/2015/10/29/connection-facebook-api-sur-une-page-web-en-2015
Je ne travaille plus dessus, j'y ai passé trop de temps.
Piste 2 : ngCordovaOAuth
Article : http://www.sitepoint.com/how-to-integrate-facebook-login-into-a-cordova-based-app/
Mon code sur GitHub : https://github.com/couscousbzh/Matador
Ce code fonctionne. Par contre il utilise ngCordova et ngCordovaOauth.Ce n'est pas un problème si on maitrise Angular, ce qui n'est pas encore le cas pour moi. J'aurais aimé dans un premier temps m'en passer.
Encore une fois ce code fonctionne mais dès que j'essaie de décomposer, refactoriser ce code je me heurte à d'autre problèmes. Et je perds du temps.
Piste 3 : Oauth.io
J'utilise un service, https://oauth.io/, gratuit pour les devs, payant par la suite. Le code est simple et rapide à mettre en place. Voici deux applications pour vous permettre de le prendre en main (voir aussi mon précédent article) :
Le premier permet de comprendre les mécanismes de login/logout
Le second tente d'exploiter les APIs. Le bilan est mitigé car :
Avantages :
- Simple à mettre en place
- Accès à un dashboard qui permet d'avoir des informations sans doute très utiles pour le dev et la prod
- Multi-Tiers, on peut y brancher tout un tas d'API (Facebook, Twitter, Instagram...)
- Poster un message sur le mur de Facebook est simple à mettre en place.
Inconvénients :
- limité. J'ai tenté de poster une photo depuis le mobile directement sur les photos de facebook. J'ai pas réussi, pas de doc la dessus.
- support limité ou inexistant. Suite à mon problème, j'ai posté une question sur StackOverflow, ce que recommande la FAQ de leur site. Mais Aucune réponse pour l'instant de OAuth.io. Si c'est payant par la suite, j'aurais aimé avoir un peu de support.
Piste 4 : phonegap-facebook-plugin
Le plugin phonegap-facebook-plugin propose de créer un pont avec le SDK Facebook natif et votre code Javascript. Ce qui permettrait de pouvoir par exemple loguer le user directement dans notre app (si l'application officielle Facebook est installé sur le device apr exemple)
Voici le repo GitHub : https://github.com/Wizcorp/phonegap-facebook-plugin
A la lecture de cet article, je n'ai pas eu envie de me casser la tête. L'article a plus d'un an et depuis le set up à l'air d'avoir évolué (par exemple, il n'est plus nécessaire de faire de manipulation sur Eclipse). Je le mets de coter pour le travailler éventuellement plus tard.
Piste 5 : OpenFB
OpenFB est une micro librairie pour l'intégration de Facebook en Javascript dans une application browser/Cordova. Ca tombe bien c'est le sujet de cet article.
Cette lib utilise l'api Rest de Facebook, ce qui permet de "contourner" la lib officielle Javascript de Facebook.
article intéressant : http://kmturley.blogspot.fr/2014/10/facebook-login-inside-hybrid-app-using.html
repo GiHub : https://github.com/ccoenraets/OpenFB
J'ai testé OpenFb rapidement, en copiant collant bêtement leurs codes et en ajoutant qq fonctionnalités.
Pour l'instant j'arrive très bien à le faire fonctionner sur Android. Par contre, gros soucis sur iOS : page blanche lors d'un login...Si quelqu'un à un tuyau...
J'ai fait un article sur le setup de l'application sur Facebook
Conclusion :
L'intégration de Facebook reste toujours une tâche difficile, même en cette fin d'année 2015. J'ai voulu partager mon expérience en ouvrant plusieurs pistes.
Pour ma part, la plus simple et rapide est oAuth.io, mais c'est payant. OpenFb est aussi un bon choix et j'ai réussi à aller jusqu'au bout (en dev) sur Android.
Par contre, je n'arrive à rien sur iOS, dans tous les cas. Help !