2011-06-23 6 views
1

私はユーザーの壁に投稿するFacebookブックアプリを持っています。投稿には(私のアプリへの)リンクがあり、好きなページにはlike buttonがあります。Facebook PHP SDKが好きになっています

今は、1時間に1回実行するスクリプトを作成しています(crontabから設定)。そのスクリプトでは、私は2つの異なる好きな数を取得する必要があります:

  1. メッセージに好きなものが壁に掲示されています。
  2. 私のアプリで好きなこと(ボタン付き)。このコードは働いていたが、突然、それはないです

    $result = $facebook->api(array(
           'method' => 'fql.query', 
           'query' => 'SELECT user_id FROM like WHERE post_id="'.$idPost.'"' 
         )); 
    $likesWall = count($result); 
    

    :私はこのコードを作った最初のもののために

。二同類が

をカウントするために、私は本当に私はそれをしなければならないのか分からない

Fatal error: Uncaught Exception: 190: Error validating access token: The session is invalid because the user logged out. thrown in C:\(...)\facebook\base_facebook.php on line 656

:それは、この例外がスローされます。私が試した:

$result = $facebook->api(array(
       'method' => 'links.getStats', 
       'urls' => $canvasPage."somePage.php?id=".$id 
     )); 

しかし、これはスロー:

Fatal error: Uncaught CurlException: 60: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed thrown in C:\(...)\facebook\base_facebook.php on line 759

をそして、これが私に与えられた:太字の部分は、私が作成したように、ボタン内のURLですhttp://graph.facebook.com/?ids=http://apps.facebook.com/appName/somePage.php?id=68&metadata=1。私がそれをブラウザに置くと、JSONに何らかの情報(好きな数を含む)が返されますが、スクリプトでどのように使用するのか分かりません。

詳細情報:私は、最新バージョンのSDK(V3)を使用してい

include_once 'facebook/facebook.php'; 
$facebook = new Facebook(array(
    'appId' => $appId, 
    'secret' => $secret 
)); 

:ここ

は、Facebookのオブジェクトを定義するためのコードです。

答えて

0

見つけました。

私はこのようにそれを作った:

function get_content($url){ 
    $options = array(
     CURLOPT_RETURNTRANSFER => true,  // return web page 
     CURLOPT_HEADER   => false, // don't return headers 
     CURLOPT_FOLLOWLOCATION => true,  // follow redirects 
     CURLOPT_ENCODING  => "",  // handle all encodings 
     CURLOPT_USERAGENT  => "spider", // who am i 
     CURLOPT_AUTOREFERER => true,  // set referer on redirect 
     CURLOPT_CONNECTTIMEOUT => 120,  // timeout on connect 
     CURLOPT_TIMEOUT  => 120,  // timeout on response 
     CURLOPT_MAXREDIRS  => 10,  // stop after 10 redirects 
     CURLOPT_SSL_VERIFYPEER => false, 
     CURLOPT_SSL_VERIFYHOST => 2, 
    ); 

    $ch  = curl_init($url); 
    curl_setopt_array($ch, $options); 
    $content = curl_exec($ch); 
    $err  = curl_errno($ch); 
    $errmsg = curl_error($ch); 
    $header = curl_getinfo($ch); 
    curl_close($ch); 

    $header['errno'] = $err; 
    $header['errmsg'] = $errmsg; 
    $header['content'] = $content; 
    //return $header; 
    return $content; 
} 

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

$accessToken = get_content("https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=".$appId."&client_secret=".$secret); 
$accessToken = substr($accessToken, strpos($accessToken, "=") + 1); 

$fqlResult = get_content("https://api.facebook.com/method/fql.query?query=SELECT+user_id+FROM+like+WHERE+post_id%3D\"".$idPost."\"&format=json&access_token=".$accessToken); 
$fqlResult = json_decode($fqlResult); 
$countLikesWall = count($fqlResult); 

$fqlResult = get_content("https://api.facebook.com/method/fql.query?query=SELECT+like_count+FROM+link_stat+WHERE+url%3D\"http%3A%2F%2Fapps.facebook.com%2F**MyAppsName**%2F**somePage**.php%3Fid%3D".$id."\"&format=json&access_token=".$accessToken); 
$fqlResult = json_decode($fqlResult); 

$countLikesUrl = $fqlResult[0]->like_count; 
+0

どのように使用しますか? – daryl

+0

どちらの部分が分かりませんか? – Diego

+0

function get_content($ url){その部分は、何とか関数を呼び出すでしょう。何を$ urlとして入れますか? – daryl

0

アプリは、ユーザーから「read_stream」権限を必要としていることを追加する必要があります。あなたがそのパーミッションを持っていなければ、クエリは "[]"のような空の配列を返します。

+0

ありがとう!私はこれが答えのコメントであるべきだと思います。それは他の答えではありません。 – Diego