ブログ - d3pipes で facebook の json形式の更新情報を取得
d3pipes で facebook の rss を取得していたのだが、
去年の夏くらいから facebook から rss を取得することができなくなっていた。
graph API から json で取得することができるようなので、d3pipes でやってみようと...
まずは facebook から json で取得しなければならないが、以下のような手順が必要な模様。
(1)developer登録する
(2)新規アプリ作成して App Token を取得する
(AppToken は Tools&Support の AccessTokenTool で得られる)
その上で
から json 形式でデータが取得できる
(facebook_page_id はGraphAPIExplorer などから取得できる)
さて、ここからが本題
去年の夏くらいから 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による取得(推奨)」では動作しなかった。
問題はパース部分で、これはないので作るしかなさそう。
見よう見まねでちゃちゃっと作ってみる
これを D3pipesParseFacebookjson.class.php という名前で joints/parse/ の下に作成する。
これで パイプ編集画面の XML解析の部分に facebookjson というジョイント(?)が出てくるので、2段目として選択。
あとは前回の記事に使ったジョイントを組み合わせれば完成!!
めでたく facebook の 更新情報を表示することができた。
d3pipes 最強である。
ちなみに 「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 最強である。