Quantcast
Channel: HAPPY*TRAP » Facebook
Viewing all articles
Browse latest Browse all 10

Facebook Batch APIを使ってリクエストをまとめて実行する方法

$
0
0
Facebook Batch API リクエストをまとめて実行する方法

FacebookのBatch APIを使うと、リクエストをまとめて実行することができます。

以下のサンプルでは、自分がいいねしたFacebookページのいいね数を、ページ単位にリクエストするのではなく、Batch APIを使って一括してリクエストしています。

2012/04/12時点では、Batch APIで一度にリクエストできる数は50となっていますので、50リクエスト毎にBatch APIを実行しています。

※サンプルの作成には、以下のサイトを参考にさせてただきました。

sample.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
// リクエスト上限数
define('MAX_REQUEST_NUM', 50);

require('src/facebook.php');

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

$user = $facebook->getUser();
if ($user) {
  try {
    // いいねしたページを取得
    $likes = $facebook->api('/me/likes');

    // いいねしたページの数
    $num = count($likes["data"]);

    // バッチ用カウンタ
    $batchCount = 0;
   
    for ($i = 0; $i < $num; $i++) {
        // 1リクエスト分を登録
        $requests[] = array('method' => 'GET', 'relative_url' => '/' . $likes['data'][$i]["id"]);
        $batchCount++;
        // リクエスト上限数か最後の場合
        if ($batchCount >= MAX_REQUEST_NUM || $i == ($num - 1) ) {
            // 一括リクエストを実行
            $response = $facebook->api('/?batch=' . json_encode($requests), 'POST');
            // レンスポンスを処理
            foreach($response as $key => $val) {
                $body = json_decode($response[$key]["body"], true);
                echo $body['name'] . ' : ' . $body['likes'] . "<br />";
            }
            $batchCount = 1;
            $requests = array();
        }
    }
  } catch (FacebookApiException $e) {
    error_log($e);
  }
}


Viewing all articles
Browse latest Browse all 10

Trending Articles