Facebook, Twitter, Linkedin, Google+ megosztási számok lekérdezése

Ha valaki egyedi közösségi gombot készít a Facebook, Twitter, Linkedin, Google+ valamelyikére, akkor előjöhet az a kérdés, hogy jelenleg mennyi is az adott szolgáltatással elért megosztások száma egy URL-n. PHP-val elkövetett lekérdezések a cikkben.

Könnyen lekérdezhetjük PHP-val szerveroldalról a megosztások számát, majd a kapott számokkal dolgozhatunk tovább.

Lássuk is ezt Facebook-ra:

function get_likes($url) {
    $json_string = file_get_contents('http://graph.facebook.com/?ids=' . $url);
    $json = json_decode($json_string, true);
    return intval( $json[$url]['shares'] );
}

Twitter:

function get_tweets($url) {
    $json_string = file_get_contents('http://urls.api.twitter.com/1/urls/count.json?url=' . $url);
    $json = json_decode($json_string, true);
    return intval( $json['count'] );
}

Linkedin:

function get_linkedin_shares($url) {
    $json_string = file_get_contents("http://www.linkedin.com/countserv/count/share?url=$url&format=json");
    $json = json_decode($json_string, true);
    return intval( $json['count'] );
}

Google+:

function get_plusones($url) {

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, "https://clients6.google.com/rpc");
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"' . $url . '","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
    $curl_results = curl_exec ($curl);
    curl_close ($curl);
    $json = json_decode($curl_results, true);
    return intval( $json[0]['result']['metadata']['globalCounts']['count'] );
}

A Google+ megosztási számok lekérdezése CURL hívással történik (a POST miatt), a másik 3 lekérdezés csak file_get_contents-t használ, javasolt egyébként azokat is lecserélni CURL hívásosra, mert így beállítható egy maximális várakozási idő (CURLOPT_CONNECTTIMEOUT) a hívott URL-lel szemben.

Facebook megosztások lekérdezése CURL-val:

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://graph.facebook.com/?ids=' . $url);
curl_setopt($curl, CURLOPT_POST, 0);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
$curl_results = curl_exec ($curl);
curl_close ($curl);
$json = json_decode($curl_results, true);
return intval( $json[$url]['shares'] );

Valamint plusz optimalizálási lehetőség, ha az oldalunk betöltése után elég megtudni a megosztási számokat, akkor AJAX lekérhetjük őket az alábbi módon:

jQuery.ajax({
    type: 'get',
    url: 'http://graph.facebook.com/?ids='+url,
    dataType: 'json',
    success: function(response,status,xhr){
        jQuery(".social_facebook").html(response[url].shares);
    },
    error: function(xhr,status,error){
    }
});

Buy and Trade Bitcoin at Binance