Page 1 sur 1

PHP et API Facebook

Posté : 14 déc. 2016, 22:39
par Sebastien
Bonjour,

Sauriez vous si quelque part, il y aurait des tuto pour attaquer les API facebook en PHP ? (avec exemples afin de comprendre)

Merci

Re: PHP et API Facebook

Posté : 15 déc. 2016, 00:43
par @rthur
La doc de l'API Facebook me semble être un bon point de départ ;-)
https://developers.facebook.com/docs/php/gettingstarted

Re: PHP et API Facebook

Posté : 15 déc. 2016, 11:08
par Sebastien
Tout à fait, la doc est un bon point de départ... quand on la comprend.
Il n'y a aucun exemple (en BTS info, on nous a appris a bosser sur des exemples !) ,peu de commentaires et pire du tout : c'est de l'objet !! Y'a rien de plus simple ?
Par exemple, j'ai réussi à lire ce que je voulais mais ca ne marche qu'une fois de temps en temps, je comprends pas pourquoi. Je doute que ca vienne de moi puisque ca marche parfois. A moins que je n'ai pas tout pigé dans l'API...
C'est pour ca que je recherche des tutos et pas des exemples. Et en français pour pouvoir bien comprendre, mais ca, ca va de soit

Re: PHP et API Facebook

Posté : 16 déc. 2016, 01:31
par @rthur
Euh... la doc que je t'ai fournie est 1) en Français, 2) constituée à 80% d'exemples, 3) où quasiment 1 ligne sur 3 est un commentaire !!!

Donc va peut être falloir que tu lises attentivement le lien que je t'ai donné car ça ne correspond pas du tout à ta description.

Alors certes c'est des objets vu que le SDK est ainsi proposé par Facebook donc il faudra t'y faire.
Et oui tu peux être sûr à 99%, vu les milliers de projets qui utilisent l'API Facebook, que si ton code ne marche pas, ça vient probablement de ton code et pas de Facebook ;-)

Après des tuto il en existe un paquet sur le web, mais sans savoir ce que tu veux faire, c'est difficile de t'en conseiller un plutôt qu'un autre : https://www.google.fr/search?q=tuto+API+facebook+PHP
Mon conseil serait surtout que tu fasses attention à prendre un tuto pas trop ancien pour être sûr que le SDK utilisé n'est pas obsolète.

Re: PHP et API Facebook

Posté : 16 déc. 2016, 11:05
par Sebastien
euh je crois qu'on ne se comprend vraiment pas sur la notioin d'exemple.
Quand o n voit un truc incomplet comme

Code : Tout sélectionner

# login-callback.php
, j'appelle pas ca un exemple. faut il changer quelque chose dans es crochets ? Alors oui, mais 80% de truc comme ca, moi je sais pas faire, je sais pas quel paramètre mettre, un exemple doit se copier-coller, fonctionner pour après être adaptable. Sinon c'est un exécrable exemple (première règle de programmation à l'école : recopie l'exemple)
En revanche j'ai effectivement trouvé et testé hier des tuto trouvé sur youtube. Apres avoir strictement refait les même manips, ca ne marchait pas. j'ai repris le code que la personne mettais sur github, et je retombe sur les même problemes... On est d'ailleurs plusieurs maintenant à douter de l'API de facebook
JE vais reprendre ca calmement mais je doute pouvoir en tirer quelque chose. Ca serai si simple d'attaquer un webservice....

Re: PHP et API Facebook

Posté : 16 déc. 2016, 12:22
par Sebastien
Par contre, comme vous me l'avez conseillé j'ai repris le tutoriel proposé dans la doc Facebook et je coince... à le 2e ligne ,(est il vraiment bien fait ce truc ? j'en doute de + en plus). Et je ne comprends pas une écriture syntaxique objet (à ce fichu objet !)

dans la ligne
$fb = new Facebook\Facebook([
que veux dire cet antislash ? le croyait que je new était suivi du nom de la classe ? Evidemment, si je pose cette question c'est que j'ai une belle erreur sur cette ligne :

Code : Tout sélectionner

Fatal error: Class 'Facebook\Facebook' not found in /Applications/XAMPP/xamppfiles/htdocs/facebook/index.php on line 4
Démarrer sur une erreur incompréhenible sur la 4e ligne, ca s'annonce mal grrrr...

Voici la hierachie de dossiers que j'ai mis en place
Image

Re: PHP et API Facebook

Posté : 16 déc. 2016, 12:32
par Sebastien
A priori, cela viendrait de l'ID de l'app et le secret key mal renseignée

Re: [RESOLU] PHP et API Facebook

Posté : 16 déc. 2016, 13:53
par moogli
$fb = new Facebook\Facebook([

utilisation des espaces de nom (namespace) histoire d'éviter un conflit entre nom de classe identique (genre un mec qui a aussi créée une classe Facebook mais qui n'est pas celle ci
la doc http://php.net/manual/fr/language.namespaces.php

pour les tutos c'est pas parce que tu ne comprends pas que c'est mal fait ;)

L'erreur indique que php ne trouve pas la classe, je pense qu'il te manque une inclusion du fichier qui contient la classe.

si tu utilises un chargement automatique des classes (autoload) peux être n'as tu pas mis le sdk facebook au bon endroit.

@+

Re: [RESOLU] PHP et API Facebook

Posté : 16 déc. 2016, 14:10
par Sebastien
Pour le SDK oui je pensais que c'était un probleme de SDK mal positionné mais quand on regardema copie d'ecran, avec l'arborescence, on voit qu'il est bien mis sous la racine du répertoire
Pour les tutos, si d'une manière générale, c'est mal fait car ca part tout de suite en prenant en compte que les gens connaissent tout. Parmi mes taches professionnelles, je rédige des tutos. Si je faisais ca comme ca, je me ferais vraiment engueuler. Il faut toujours partir du point de départ que les gens ne connaissent pas l'informatique. (et c'est la majorité de nos clients :-)). Mais peu de gens le font sur internet, pour impressionner la galerie je pense.
Pour ces histoires d'espace de nom, ce nouveau concept est barbare, j'ai jamais compris a quoi ca pouvait bien servir (on s'en servait deja en .net et c'était deja le bordel). De toutes façon, depuis que PHP est objet, ca devient le bordel je trouve, c'est de + en + compliqué. La force de PHP (simplicité) est en train de tuer PHP auprès des non informaticiens (c'est mon point de vue)
J'ai regardé la doc sur les namespace, effectivement je connaissait pas ca en PHP, je l'avais un peu vu en .net mais sans plus. Il est vrai que je ne connaissais pas la syntaxe, je voyais pas à quoi ca pouvait servir cet antislash

Merci popur la reponse

Re: [RESOLU] PHP et API Facebook

Posté : 16 déc. 2016, 14:20
par Sebastien
Je vai essayer de voir pourquoi j'ai

Code : Tout sélectionner

Exception occured, code: 2500 with message: An active access token must be used to query information about the current user.

Re: PHP et API Facebook

Posté : 19 déc. 2016, 12:29
par moogli
pour le message d'erreur la c'est FB qui te dit que ton jeton d'accès n'est pas actif (en gros il est pas bon).

Pour les tuto tu indiques qu'il faut allumer les écrans et brancher le pc sur le secteur ?

La doc d'une api c'est destiné à un développeur. Il faut un minimum de compétence.

ce n'est pas parce que l'on vois en permanence des opérations à cœur ouvert à la TV avec plein d'explication que l'on tente la chose (pareil pour les mecs qui remonte un moteur complet avec un tournevis et une clef à molette :-) ).

bref oui il faut inclure des fichiers, cela doit être un réflexe quand tu récupères une librairie tierce, pour utiliser le code il faut l'inclure;, il n'y a pas de magie (c'est pas lié à l'api FB).

pour les espaces de noms c'est important. cela formalise dans le code ce que tu fais (devrais faire) quand tu organises tes fichiers en répertoire (controlleurs, dao, vues etc.).
C'est la notion de paquet (package) en java ou en go (python ou ruby aussi il me semble). Ce n'est pas nouveau et permet d'éviter les erreurs dans le nom de classe mais aussi de fonction.

cela permet d'avoir une fonction / classe init à plusieurs endroit sans que tu fasse chier pour savoir laquelle tu utilises.
plus important, cela permet de partager du code (ce que fait FB avec son AI) en étant certain que personne va venir couiner avec un "sa marche pas" parce qu'il y a quelque chose avec le même nom qui est écrasé par le mec qui intègre le code partagé.

Bref ce n'est pas le bordel le parce qu'il y a ajout de fonctionnalité, (par forcément lié à la poo) c'est une force d'avoir une organisation possible (voir forcée par le langage) qui permet d'éviter des erreurs.
Tu n'es pas obligé d'utiliser la poo en php cela fonctionne sans. Dans ton cas FB à choisit de partager son API via la poo. Tu n'as pas le choix :-)

et pour finir php n'est pas objet la documentation te le prouve bien avec la quantité de fonction utilisable sans poo. Oui les nouvelles fonctionnalités sont souvent en poo.
tu peux regarder d'autre langage, .net que tu connais déjà ou java tu verras des langage entierement objet et il y a une différence. Tu peux regarder aussi Golang qui lui n'est pas objet, mais le ducktyping c'est pas la joie on plus ;)

Bref il faut s'adapter un peu au langage, php n'est pas des plus complexe mais s'il se rigidifie un peu avec le temps pour son bien (et justement éviter que les gens fasse n'importe quoi avec).

bon courage pour la suite.

@+

Re: PHP et API Facebook

Posté : 19 déc. 2016, 21:28
par Sebastien
Merci pour la réponse.
Bon, oui s'il faut s’embêter a gérer du MVC, on n'est pas dans la m... Je supporte pas cette organisation que tout le monde trouve géniale. Moi avec cette organisation, je retrouve pas mes petits (il faut dire aussi que mon handicap me pose de gros pb de mémorisation.... et ca j'y peux pas grand chose). Je défends le procédural depuis que j'ai découvert cette m.. d'objet. Car l'objet pour rien y comprendre c'est génial. Je ne supporte pas d'exploser mon code et en foutre partout (je dois etre trop organisé dans ma tête). Mais bon ca ca n'engage que moi :-)
Pour la notion de classe, j'ai jamais touché à java qui est bcp trop compliqué (je teste professionnellement des appli java et suis bien heureux de n'avoir pas à toucher au code. J'ai essayé mais justement cette explosion de code partout ca m'horipile : je retrouve rien.

Enfin bref, c'esrt de plus en plus élitiste, et a terme on va pu rien faire avec php, hormis se faire chier avec l'objet (qui necessite entre 2 et 3 fois plus de code). Mais où est l'optimisation ?

Quant au jeton, 'est pas moi qui me l'attribue. Donc je vois pas pourquoi un jeton attribué par FB n'est plus disponible juste après sa création. Mystère. Mais bon, merci à tous, j'abandonne mon projet sous cette forme. Je vais essayer de trouver à le faire autrement