2016-08-19 6 views
-1

J'avais l'habitude de pouvoir obtenir la page J'aime avec une seule URL de requête FQL sur Facebook. Mais depuis la semaine dernière, ils l'ont fermé. Exigeant d'utiliser leur SDK ou leur API, mon système analyse les pages facebook de mes utilisateurs et affiche leur préférence de page.Obtenir la page Facebook Apprécie en PHP (après la dépréciation FQL)

Est-il possible de contourner ce problème, comme si j'utilisais le SDK ou l'API. J'ai besoin d'une application pour chaque demande pour chaque page.

Merci.

Note: J'ai essayé d'utiliser les en-têtes & agents utilisateurs à aucune joie avec file_get_contents() & essayé sur une demande de téléphone mobile en vain.

code:

$url = "http://m.facebook.com/pagename/"; 

$options = array(
    'http'=>array(
    'method'=>"GET", 
    'header'=>"Accept-language: en\r\n" . 
       "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7\r\n" 
) 
); 

$context = stream_context_create($options); 
$file = file_get_contents($url, false, $context); 

print_r($file); 

Résultat:

enter image description here

+1

wiht chaque utilisateur devra obtenir le access_token pour obtenir le infor utilisateur par l'api facebook. former la réponse API, vous pouvez obtenir ce que vous voulez maintenant. –

+0

_ "Cependant, mon système scanne les pages facebook de mes utilisateurs" _ - gratter leurs pages sans consentement écrit préalable de Facebook est contre leur ToS, donc ce que vous avez fait n'était pas déjà autorisé. L'utilisation de leur API est la bonne façon de s'y prendre. – CBroe

Répondre

1

Je ne sais pas pourquoi cette question est downvoted. Auparavant, nous avions l'habitude d'obtenir un compte similaire/partagé en utilisant fql qui est amorti après le 7 août 2016. Nous pouvons utiliser cette astuce pour obtenir le compte comme.

Il suffit de faire une demande de curl à facebook & analyser le résultat.

$domain='stackoverflow.com'; 
    $protocol='http://'; 
    $orgin=$protocol.$domain.'/'; 
    $url='http://stackoverflow.com'; 

    $param=array('action'=>'like','app_id'=>'','channel'=>'http://staticxx.facebook.com/connect/xd_arbiter/r/lUqP5iIjiw6.js?version=42#cb=f178d9075b06a6a', 
    'domain'=>$domain,'orgin'=>$orgin,'relation'=>'parent.parent','container_width'=>0,'href'=>$url,'layout'=>'button_count','locale'=>'en_GB','sdk'=>'joey', 
    'share'=>false,'show_faces'=>true,'size'=>'large'); 

    $fb_url='https://www.facebook.com/v2.6/plugins/like.php?'; 

    $ch= curl_init(); 
    $options=array( 
    CURLOPT_URL => $fb_url.http_build_query($param), 
    CURLOPT_FRESH_CONNECT => 1, 
    CURLOPT_RETURNTRANSFER => 1, 
    CURLOPT_FORBID_REUSE =>1, 
    CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 5.01;Windows NT 5.0)", 
    CURLOPT_SSL_VERIFYHOST=> 0, 
    CURLOPT_SSL_VERIFYPEER=> 0, 
    CURLOPT_REFERER=>$orgin, 
    CURLOPT_CONNECTTIMEOUT=> 10, 
    CURLOPT_TIMEOUT=>40 
); 

    curl_setopt_array($ch,$options); 
    $fb_html=curl_exec($ch); 

    if(curl_errno($ch)>0){ #checks any curl error 
    $fbc=''; 
    }else{ 
    $fb_html=preg_replace('/\s+/', '',$fb_html); 
    preg_match('/<span[^>]*id="u_0_3">(.*?)<\/span>/sm',$fb_html,$count); 
    $fbc=$count[1]; 
    } 

    curl_close($ch); 
    echo "Like count:$fbc"; 

Vérifiez ce poste pour une explication détaillée: get facebook like/share count after fql depreciation