Bonjour,
Voila je rencontre un petit problème avec mon code.
Je récupère pas mal de données via le Facebook Graph API. Cependant, je n'arrive pas à récupérer le champ emails. Dans la documentation, il indique que c'est un list string au lieu d'un string dans tous les autres champs. Ceci est consultable sur la documentation officielle.
$app_id = 'xxx';
$app_secret = 'xxx';
$non_update = get_custom_field('non_update');
// Get data from API
if (!empty(get_custom_field('facebook_update'))) {
$json_object_id = fetchUrl("https://graph.facebook.com/v2.5/".get_custom_field('facebook_update')."?access_token=".$app_id."|".$app_secret);
}else if(!empty(get_custom_field('facebook'))){
$json_object_id = fetchUrl("https://graph.facebook.com/v2.5/".get_custom_field('facebook')."?access_token=".$app_id."|".$app_secret);
}
$array_id = json_decode($json_object_id);
$json_object = fetchUrl("https://graph.facebook.com/v2.5/".$array_id->id."?fields=link%2Cbio%2Cevents%2Cpress_contact%2Cbooking_agent%2Cemails%2Cgeneral_manager%2Cband_members%2Ccurrent_location%2Cwebsite&access_token=".$app_id."|".$app_secret);
$array_data = json_decode($json_object)
// Contact
if ((!empty($array_data->general_manager) || !empty($array_data->booking_agent) || !empty($array_data->press_contact) || !empty($array_data->emails)) && in_array('contact', $non_update)==false ) {
$contact = '';
if (!empty($array_data->general_manager)) {
$contact .= 'Directeur géneral: '.$array_data->general_manager.' ';
}
if (!empty($array_data->booking_agent)) {
$contact .= 'Agent artistique: '.$array_data->booking_agent.' ';
}
if (!empty($array_data->press_contact)) {
$contact .= 'Contact presse: '.$array_data->press_contact.' ';
}
if (!empty($array_data->emails)) {
$contact .= 'Email: '.$array_data->emails.' ';
}
if ($contact!=get_custom_field('contact')) {
update_post_meta($post_id, 'contact', $contact );
}
}
Récupérer le champs "emails"
Quand je récupère le champs emails, ca me renvoie "array". J'ai vérifier via l'Explorateur de l'API Graph. Je n'ai pas de code d'erreur. Ca m'affiche array uniquement quand la Page a bien ce champ de rempli (ce que j'avais demandé). Je n'ai aucun problème avec mes autres champs
parce que la valeur retournée par emails est surement un tableau contenant des emails...
fait un var_dump($array_data->emails) tu vera bien ce que ca te ressort...
il existe ensuite des methodes php pour récupérer le premier element current($array), ou le dernier end($array) ou concatener le tableau en string array_implode(). regarde les docs php ;)
Merci keulu. J'avais déjà testé var_dump mais ca me retournerait "array". Par contre, en utilisant current($array) comme tu me l'as suggéré, il me retourne bien une valeur du tableau. Mon problème est donc résolu
fait gaffe, parce que si facebook te présente ca sour forme de liste, ca veux dire que tu peux avoir potentiellement plusieurs email dans ce champ....
Oui effectivement, après, j'ai encore jamais vu plusieurs emails dans ce champ. Mais cela dit, avec un seul mail j'ai tout ce qu'il me faut.
oui oui mais si je te dit ca, c'est que dans 2 ans, tes infos seront peut être fausses, car l'utilisateur aura peut ete MAJ ses infos facebook (et surtout son email dans ce cas) donc, l'email courant de l'utilisateur ne sera pas forcement le premier du tableau (facebook te renvoit peut etre la liste de tous ses emails connus...).
Je sais pas comment gère facebook pour ca. faudrait que tu teste avec ton compte en donnant un nouveau mail, voir ou il est dans le tableau. premiere position ? derniere ?
Je récupère le mail d'une Page et non d'un profil personnel. Actuellement, il n'est pas possible de mettre deux adresses mails dans ce champ. J'imagine que Facebook compte un jour donner la possibilité d'en mettre plusieurs (ou alors qu'avant c'était possible). Mais je resterai effectivement vigilent si un moment je vois que ca me retourne plus ce que je veux...