Boucle DATA avec Facebook

Bonjour,

j’ai un petit soucis sémantique avec ma boucle data qui retourne des données Facebook (Json). Avec le code graph classique je n’ai pas toutes les données et suis donc obligée de rajouter cela :

https://graph.facebook.com/v2.8//feed?fields=id,message,picture,link&access_token=

ma boucle data n’aime pas du tout le fields= et la succession de virgules… J’ai une erreur 404 alors que ce lien pris dans mon navigateur marche très bien.

Comment je peux contourner le problème ?

Merci pour vos lumières :slight_smile:

Teenoo

Le 21/02/2017 à 14:01, Laetitia Boiron a écrit :

Bonjour,

j’ai un petit soucis sémantique avec ma boucle data qui retourne des données Facebook (Json). Avec le code graph classique je n’ai pas toutes les données et suis donc obligée de rajouter cela :

https://graph.facebook.com/v2.8/&lt;PAGE\-ID&gt;/feed?fields=id,message,picture,link&amp;access\_token=&lt;TOKEN&gt; <https://graph.facebook.com/v2.8/<PAGE\-ID>/feed?fields=id,message,picture,link&amp;access\_token=<TOKEN>&gt;

ma boucle data n’aime pas du tout le fields= et la succession de virgules… J’ai une erreur 404 alors que ce lien pris dans mon navigateur marche très bien.

Comment je peux contourner le problème ?

Merci pour vos lumières :slight_smile:

Teenoo

Salut,

Je suppose que tu utilises un #SET/#GET pour passer cette url dans ta
boucle DATA.

J'ai déjà eu un problème lorsque l'url contenait un caratère encodé en
html (ex : '&amp;' pour '&').
voir : Itérateur JSON, erreur de compilation lorsque la source contient <code>&amp;</code> (#3750) · Tickets · spip / spip · GitLab

Si le set suivant ne fonctionne pas, partage ton code et/ou tes messages
d'erreurs pour y voir plus clair :

[(#VAL{://graph.facebook.com/v2.8/yyyy/feed?fields=id,message,picture,link&access_token=xxxxx}|set{json})]

Non même pas ! Je la met directement dans la boucle DATA :slight_smile: En fait ça marche pas à cause des virgules, car si je met qu’un seul éléments dans fields (exemple : fields=id) pas de soucis c’est la suite d’éléments séparés par une virgule qui fait coincer l’ensemble.

Le 21 févr. 2017 à 21:33, placido <placido@roxing.net> a écrit :

Le 21/02/2017 à 14:01, Laetitia Boiron a écrit :

Bonjour,

j’ai un petit soucis sémantique avec ma boucle data qui retourne des données Facebook (Json). Avec le code graph classique je n’ai pas toutes les données et suis donc obligée de rajouter cela :

https://graph.facebook.com/v2.8/&lt;PAGE\-ID&gt;/feed?fields=id,message,picture,link&amp;access\_token=&lt;TOKEN&gt; <https://graph.facebook.com/v2.8/<PAGE\-ID>/feed?fields=id,message,picture,link&amp;access\_token=<TOKEN>&gt;

ma boucle data n’aime pas du tout le fields= et la succession de virgules… J’ai une erreur 404 alors que ce lien pris dans mon navigateur marche très bien.

Comment je peux contourner le problème ?

Merci pour vos lumières :slight_smile:

Teenoo

Salut,

Je suppose que tu utilises un #SET/#GET pour passer cette url dans ta
boucle DATA.

J'ai déjà eu un problème lorsque l'url contenait un caratère encodé en
html (ex : '&amp;' pour '&').
voir : Itérateur JSON, erreur de compilation lorsque la source contient <code>&amp;</code> (#3750) · Tickets · spip / spip · GitLab

Si le set suivant ne fonctionne pas, partage ton code et/ou tes messages
d'erreurs pour y voir plus clair :

[(#VAL{://graph.facebook.com/v2.8/yyyy/feed?fields=id,message,picture,link&access_token=xxxxx}|set{json})]

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Du coup, copie simplement cette ligne avant ta boucle (en complétant
page_id et token) :

[(#VAL{://graph.facebook.com/v2.8/yyyy/feed?fields=id,message,picture,link&access_token=xxxxx}|set{json})]

Puis ajuste ta boucle ainsi :

<BOUCLE_jsonfb(DATA){source json, #GET{json}}>
...
</BOUCLE_jsonfb>

NB : je ne sais pas dans quelle mesure 'page_id' et 'token' sont
confidentiels. Il faudra peut être changer les droits de lecture sur le
dossier squelettes s'ils restent déclarer ainsi "en dur" dans le skel.

Non toujours une erreur dans le squelette //graph.facebook.com/v2.8/249360491745261/feed?fields=id, json] 404
Oui le token est confidentiel car relatif à une API pour un site, enfin moi je préfère :slight_smile: l’id de la page on s’en fiche, j’avais juste mis l’ensemble plus light pour pas s’égarer.
Il est clair que c’est la virgule qui met le souk

Le 21 févr. 2017 à 21:46, placido <placido@roxing.net> a écrit :

Du coup, copie simplement cette ligne avant ta boucle (en complétant
page_id et token) :

[(#VAL{://graph.facebook.com/v2.8/yyyy/feed?fields=id,message,picture,link&access_token=xxxxx}|set{json})]

Puis ajuste ta boucle ainsi :

<BOUCLE_jsonfb(DATA){source json, #GET{json}}>

</BOUCLE_jsonfb>

NB : je ne sais pas dans quelle mesure ‹ page_id › et ‹ token › sont
confidentiels. Il faudra peut être changer les droits de lecture sur le
dossier squelettes s’ils restent déclarer ainsi « en dur » dans le skel.


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

J’ai peut être trouvé une solution pour contourner le problème. mais je ne vois pas trop comment fusionner l’ensemble.

Je créé une boucle DATA pour les photos, une pour les liens et une boucle avec le reste de base. Tous les résultats ont un id commun par post.

#SET{trier,#ARRAY{}} // je tri des éléments hétérogène à la base : articles, flux twitter, insta et fb

#SET{photo_fb,#ARRAY{}} [(#SET{photo_fb,[(#GET{photo_fb}|push{ [(#ARRAY{ objet,"facebook", id,#VALEUR{id}, photo,#VALEUR{picture} })]})]})] #SET{url_fb,#ARRAY{}} [(#SET{url_fb,[(#GET{url_fb}|push{ [(#ARRAY{ objet,"facebook", id,#VALEUR{id}, url,#VALEUR{link} })]})]})] #SET{facebook,#ARRAY{}} [(#SET{facebook,[(#GET{facebook}|push{ [(#ARRAY{ objet,"facebook", date,#VALEUR{created_time}, chapeau,#VALEUR{message}, })]})]})] Comment je fusionne ça comme un seul et même élément grâce à mes id ? TEENOO Le 22 févr. 2017 à 13:30, Laetitia Boiron <[boiron.laetitia@gmail.com](mailto:boiron.laetitia@gmail.com)> a écrit : Non toujours une erreur dans le squelette **//[graph.facebook.com/v2.8/249360491745261/feed?fields=id](http://graph.facebook.com/v2.8/249360491745261/feed?fields=id), json] 404** Oui le token est confidentiel car relatif à une API pour un site, enfin moi je préfère :) l’id de la page on s’en fiche, j’avais juste mis l’ensemble plus light pour pas s’égarer. Il est clair que c’est la virgule qui met le souk Le 21 févr. 2017 à 21:46, placido <[placido@roxing.net](mailto:placido@roxing.net)> a écrit : Du coup, copie simplement cette ligne avant ta boucle (en complétant page_id et token) : [(#VAL{://[graph.facebook.com/v2.8/yyyy/feed?fields=id,message,picture,link&access_token=xxxxx](http://graph.facebook.com/v2.8/yyyy/feed?fields=id,message,picture,link&access_token=xxxxx)}|set{json})] Puis ajuste ta boucle ainsi : ... NB : je ne sais pas dans quelle mesure 'page_id' et 'token' sont confidentiels. Il faudra peut être changer les droits de lecture sur le dossier squelettes s'ils restent déclarer ainsi "en dur" dans le skel. _______________________________________________ liste spip [spip@rezo.net](mailto:spip@rezo.net) - désabonnement : envoyer un mail à [spip-off@rezo.net](mailto:spip-off@rezo.net) Archives : [https://www.mail-archive.com/spip@rezo.net/maillist.html](https://www.mail-archive.com/spip@rezo.net/maillist.html) Infos : [http://listes.rezo.net/mailman/listinfo/spip](http://listes.rezo.net/mailman/listinfo/spip) Documentation de SPIP : [http://www.spip.net/](http://www.spip.net/) Irc : de l'aide à toute heure : [http://spip.net/irc](http://spip.net/irc)

Tu te compliques inutilement la vie je pense. Pour contourner le
problème des virgules interprétées, tu dois englober l'url avec des
apostrophes < ' >, et ça là ça devrait marcher directement.

[(#VAL{'https://graph.facebook.com/v2.8/yyyy/feed?fields=id,message,picture,link&access_token=xxxxx
<http://graph.facebook.com/v2.8/yyyy/feed?fields=id,message,picture,link&access_token=xxxxx>'}|set{json})]

<BOUCLE_jsonfb(DATA){source json, #GET{json}}>

Je n’ai plus de message d’erreur, mais aucune donnée n’est retournée dans la boucle…

Le 22 févr. 2017 à 14:47, placido <placido@roxing.net> a écrit :

Tu te compliques inutilement la vie je pense. Pour contourner le
problème des virgules interprétées, tu dois englober l'url avec des
apostrophes < ' >, et ça là ça devrait marcher directement.

[(#VAL{'https://graph.facebook.com/v2.8/yyyy/feed?fields=id,message,picture,link&access_token=xxxxx
<http://graph.facebook.com/v2.8/yyyy/feed?fields=id,message,picture,link&access_token=xxxxx>'}|set{json})]

<BOUCLE_jsonfb(DATA){source json, #GET{json}}>

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Rien du tout ? Pas même en mode debug ?

[(#VALEUR|print_r{1}|debug|oui)]