ブログ - d3pipes で facebook の json形式の更新情報を取得

d3pipes で facebook の json形式の更新情報を取得

カテゴリ : 
Customize/Hackメモ » お決まりのパターン
執筆 : 
masa 2016/1/8
d3pipes で facebook の rss を取得していたのだが、
去年の夏くらいから facebook から rss を取得することができなくなっていた。
graph API から json で取得することができるようなので、d3pipes でやってみようと...

まずは facebook から json で取得しなければならないが、以下のような手順が必要な模様。

(1)developer登録する
(2)新規アプリ作成して App Token を取得する
(AppToken は Tools&Support の AccessTokenTool で得られる)

その上で

https://graph.facebook.com/{facebook_page_id}/feed?access_token={access_token}

から json 形式でデータが取得できる

(facebook_page_id はGraphAPIExplorer などから取得できる)

search?q=XXXXXXXX&type=user



さて、ここからが本題
上記 URL で JSON は取得できるので d3pipes の一段目は 「URL fopenによる取得」で上記URLを指定すればよい。
ちなみに 「Snoopyによる取得(推奨)」では動作しなかった。

問題はパース部分で、これはないので作るしかなさそう。
見よう見まねでちゃちゃっと作ってみる

<?php

require_once dirname(dirname(__FILE__)).'/D3pipesParseAbstract.class.php' ;

class D3pipesParseFacebookjson extends D3pipesParseAbstract {

    function execute( $json_source , $max_entries = '' )
    {
        $items = array() ;

        $result = json_decode($json_source, true);
        if( ! $result ) {
            $this->errors[] = 'Invalid JSON data for this Parser'."\n($this->pipe_id)" ;
        }

        foreach( $result["data"] as $entry ) {
            $message = $entry['message'];
            $link = $this->resolveLink($entry['id']);
            $created = new DateTime($entry['created_time']);
            $items[] = array(
                'headline' => $message ,
                'pubtime' => $created->getTimestamp(),
                'link' => $link ,
                'description' => $message,
                'fingerprint' => md5( $message ) ,
            ) ;
        }

        return $items ;
    }

    function resolveLink( $id )
    {
        $r = explode('_', $id);
        
        return 'https://www.facebook.com/permalink.php?story_fbid=' . $r[1] . '&id=' . $r[0];
    }

    function renderOptions( $index , $current_value = null )
    {
        return '' ;
    }
}

?>


これを D3pipesParseFacebookjson.class.php という名前で joints/parse/ の下に作成する。

これで パイプ編集画面の XML解析の部分に facebookjson というジョイント(?)が出てくるので、2段目として選択。

あとは前回の記事に使ったジョイントを組み合わせれば完成!!

めでたく facebook の 更新情報を表示することができた。
d3pipes 最強である。
  • トラックバック (0)
  • 閲覧 (4409)