Bonjour,

j'ai ce code qui envoie une commande à l'api facebook ...ça marche très bien :

  FB.api('https://graph.facebook.com/','post',  {
      id: 'example.fr/',
      scrape: true,
      access_token:'xxxxxxxxxxx|xxxxxxxxxxxx'
  }, function(response) {
      console.log('rescrape!',response);
      $(thisbutton).closest(".panel-meme").find(".testajax").append(response);
  });

Seulement , je ne peux pas mettre mes Token secret d'api sur la partie client....je souhaite donc réaliser la même chose, mais coté serveur, en php.
J'envoie mon url (id) en ajax.
Et voici le code php que j'ai espéré fonctionnel...mais hélas non :

class FacebookDebugger {
        public function reload($url)
{
    $token = 'xxxxxxxxxxxxxxx|xxxxxxxxxxx';
    $graph = 'https://graph.facebook.com/';
    $post = 'id='.urlencode($url).'&scrape=true&access_token='.$token;

    return $this->send_post($graph, $post);
}
    private function send_post($url, $post)
    {
        $r = curl_init();
        curl_setopt($r, CURLOPT_URL, $url);
        curl_setopt($r, CURLOPT_POST, 1);
        curl_setopt($r, CURLOPT_POSTFIELDS, $post);
        curl_setopt($r, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($r, CURLOPT_CONNECTTIMEOUT, 5);
        $data = curl_exec($r);
        curl_close($r);
        return $data;
    }
}

    $fb = new FacebookDebugger();
    $fb = $fb->reload($url)

Si sur mon retour ajax j'echo var_dump($fb) , j'ai un bolean false en retour

Une idée ?

Merci beaucoup par avançe

1 réponse


Pour les prochains lecteurs
Un code qui fonctionne :

function clear_open_graph_cache($url) {
$vars = array('id' => $url, 'scrape' => 'true' ,'access_token'=>'Api_id|api_secret' ) ;
$body = http_build_query($vars);

$fp = fsockopen('ssl://graph.facebook.com', 443);
fwrite($fp, "POST / HTTP/1.1\r\n");
fwrite($fp, "Host: graph.facebook.com\r\n");
fwrite($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
fwrite($fp, "Content-Length: ".strlen($body)."\r\n");
fwrite($fp, "Connection: close\r\n");
fwrite($fp, "\r\n");
fwrite($fp, $body);
fclose($fp);
}