[PHP][Graph API] Facebookページのいいね、リーチの取得  

# [PHP][Graph API] Facebookページのいいね、リーチの取得  
企業ページなどの、運営をしているFacebookページの「いいね」「リーチ」を取得する方法  
作成をする人がFacebookページの運営者に入っている前提でのお話

## Graph API
Facebookさんが提供している、Facebook関係のもろもろの情報を取得するためのAPI  
今回は2015/08で最新の**v2.4**の場合です。  

### Graph API Explorer
https://developers.facebook.com/tools/explorer/  
グラフAPIをここで色々試しに叩ける。便利。  
アクセストークンとかも簡単に取得できる。  
取得するアクセストークンのpermissionをマウスクリックでぽちぽち選択できる  
リーチ数を取得する際は  `read_insights`  が必要なので忘れないようにしましょう  
**注意：** ここで取得できるアクセストークンは期限付き  

### 期限切れのないアクセストークンの取得  
期限切れのないアクセストークンを取得するには  
1. Facebookアプリを作成
2. Graph API Explorerでアクセストークンを取得 ※permissionとか気を付けて  
3. Facebookアプリとアクセストークンを紐づけて、期限切れがないようにようにする  

```php
https://graph.facebook.com/oauth/access_token?
client_id=[FacebookアプリのID]
&client_secret=[Facebookアプリのパス]
&grant_type=fb_exchange_token
&fb_exchange_token=[取得したアクセストークン]

```

この辺を参考にすればうまく行くかと。  
2015年度版WordPressでFacebookアプリを使う為のDeveloers登録とアプリ作成手順  
http://itevangelist.net/blog/wordpress-facebook-developers-resgitration-and-add-app/  
Graph APIからFacebookPageのInsightsを取得する方法  
http://qiita.com/tachiba/items/c744d66889586c397d97

## いいね、リーチ数の取得  
各値の取得にはGraph APIから取得できるInsightsの中から以下の利用
* 「いいね」には**page_fans**を利用  
* 「リーチ」には**page_impressions_unique**を利用  
参考：https://developers.facebook.com/docs/graph-api/reference/v2.4/insights  

### サンプルコード  

```php
public function getFbPageValues()
{
        $date1 = '2015-08-28';
        $date2 = 'now';

        //FacebookページのID
        $pageId = 'FacebookページのID';
        //取得したアクセストークン
        $accessToken = '取得したアクセストークン';

        //いいね取得用
        $urlForLikes = 'https://graph.facebook.com/'
                        . $pageId  . '/insights/page_fans/lifetime?access_token='
                        . $accessToken . '&since=' . $date1; //until=とかもできる
        $urlForReachs = 'https://graph.facebook.com/'
                        . $pageId  . '/insights/page_impressions_unique/day?access_token='
                        . $accessToken . '&until=' . $date2;


        // Graph APIはJSON形式のデータをレスポンスとして返す
        $resultsLikes = json_decode(file_get_contents($urlForLikes));
        $likes = $resultsLikes->data[0]->values;

        $resultsReachs = json_decode(file_get_contents($urlForReachs));
        $reachs = $resultsReachs->data[0]->values;


        echo '<pre>';
        echo 'いいね<br>';
        var_dump($likes);
        echo 'リーチ<br>';
        var_dump($reachs);
        echo '</pre>';
}
```

結果

```php
いいね
array(2) {
  [0]=>
  object(stdClass)#159 (2) {
    ["value"]=>
    int(354)
    ["end_time"]=>
    string(24) "2015-08-28T07:00:00+0000"
  }
  [1]=>
  object(stdClass)#160 (2) {
    ["value"]=>
    int(354)
    ["end_time"]=>
    string(24) "2015-08-29T07:00:00+0000"
  }
}
リーチ
array(5) {
  [0]=>
  object(stdClass)#164 (2) {
    ["value"]=>
    int(1454)
    ["end_time"]=>
    string(24) "2015-08-27T07:00:00+0000"
  }
  [1]=>
  object(stdClass)#165 (2) {
    ["value"]=>
    int(2685)
    ["end_time"]=>
    string(24) "2015-08-28T07:00:00+0000"
  }
  [2]=>
  object(stdClass)#166 (2) {
    ["value"]=>
    int(671)
    ["end_time"]=>
    string(24) "2015-08-29T07:00:00+0000"
  }
  [3]=>
  object(stdClass)#167 (2) {
    ["value"]=>
    int(181)
    ["end_time"]=>
    string(24) "2015-08-30T07:00:00+0000"
  }
  [4]=>
  object(stdClass)#168 (2) {
    ["value"]=>
    int(56)
    ["end_time"]=>
    string(24) "2015-08-31T07:00:00+0000"
  }
}
```  

良い感じ(ﾉﾊｽﾞ)