CURL связь с графиком Facebook не работает - PullRequest
1 голос
/ 31 октября 2011

каждый.

У меня есть следующая проблема:

Я использую curl, чтобы получить некоторую информацию из графика в Facebook (и раньше это работало всего несколько дней назад), нотеперь я просто получаю пустой ответ.Запрос довольно прост:

https://graph.facebook.com/?ids=XXX&access_token=YYY

Параметр ids - это просто список идентификаторов для элементов в графе (в данном случае, запросы приложения).Когда я копирую / вставляю URL в браузер, он работает, но при использовании curl застревает без ответа.

Полный код вызова curl:

require 'php/facebook.php';


    $facebook = new Facebook(array(
            'appId'  => 'XXX',
            'secret' => 'YYY',
    ));


    $url = "https://graph.facebook.com?ids=".$_POST['data']."&access_token=".$_POST['access_token'];

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

    $results = curl_exec($ch);
    curl_close($ch);
    echo $results;

CouldКто-нибудь пролил свет на это?

Ура!

1 Ответ

1 голос
/ 01 ноября 2011

try {} graph.facebook.com/ с косой чертой

 $url = "https://graph.facebook.com/?ids=".$_POST['data']."&access_token=".$_POST['access_token'];

также я не уверен, откуда вы пытаетесь получить сообщение, чтобы вы могли попробовать метод запроса.

 $url = "https://graph.facebook.com/?ids=".$_REQUEST['data']."&access_token=".$_REQUEST['access_token'];

пример ajax-вызова php:

// get albums

function showAlbums(pageid,limit,offset){
thealbums = "albums";
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {

    document.getElementById("albums").innerHTML=xmlhttp.responseText;
    }
  };
  xmlhttp.open("GET","plugins.albums.php?pageid="+pageid+"&limit="+limit+"&offset="+offset+"",true);
  xmlhttp.send();
}

Попробуйте для cURL:


function GetCH(){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://graph.facebook.com?ids=".$_POST['data']."&access_token=".$_POST['access_token']");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT_MS,20000);
if(substr($url,0,8)=='https://'){
    // The following ensures SSL always works. A little detail:
    // SSL does two things at once:
    //  1. it encrypts communication
    //  2. it ensures the target party is who it claims to be.
    // In short, if the following code is allowed, CURL won't check if the 
    // certificate is known and valid, however, it still encrypts communication.
    curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_ANY);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
}
$sendCH = curl_exec($ch);
curl_close($ch);
return $sendCH;
};
$ThisId = GetCH();
echo $ThisId;
...