Facebook RSS · 1 min read · Sep 13, 2025

ブログのためのFacebook RSSフィードリーダーアプリケーションの設定方法 - ページ5

7 プロフィールのRSSフィードを自動的に更新する

あなたは、Facebookのアプリケーションのキャンバスページを訪れたときにのみ、プロフィールのRSSフィードが更新されることに気づいたかもしれません。これは問題です。なぜなら、人々はプロフィールページでほとんどの時間を過ごすからです。したがって、プロフィールページのRSSフィードを自動的に更新するには、FacebookのプロフィールでRSSフィードを自動的に更新するcronジョブをサーバーに作成する必要があります。

プロフィールを更新する方法は2つあります:直接と間接です(http://wiki.developers.facebook.com/index.php/Changing_profile_contentを参照)。コンテンツが各ユーザーごとに個別である場合は、直接方法を使用する必要がありますが、すべてのユーザーに対して同じである場合は、間接的な方法を使用する方がはるかに簡単です。私たちのRSSフィードはすべてのユーザーに対して同じであるため、間接的な方法を使用します。そのためには、cronジョブがいつでもFacebookにログインできるように、アプリケーションの無限セッションキーが必要です。

無限セッションキーを見つけるために、次のようにget_infinite_key.phpというスクリプトを作成します:http://wiki.developers.facebook.com/index.php/Infinite_session_howto:

vi /var/www/fb/htf_feed_reader/get_infinite_key.php

| require_frame(); $user = $facebook->require_login(); // みんなが話している「無限セッションキー」をエコーします。 echo $facebook->api_client->session_key; ?> |

次に、ブラウザでFacebookからログアウトし、すべてのクッキーをクリアします。あるいは、Facebookを訪れたことがない別のブラウザを使用する方が良いでしょう(私のデフォルトブラウザはFirefoxなので、SeaMonkeyを使用します)。そして、そのスクリプトをブラウザで呼び出します(例:http://fb.howtoforge.com/fb/htf_feed_reader/get_infinite_key.php)。

その後、Facebookにログインするように促されます。このアプリケーションを使用するために再度Facebookにログインしないように、ログイン情報を保存するチェックボックスを確認してください:

その後、アプリケーションの無限セッションキーを表示するページが表示されるはずです。どこかにメモしておいてください:

その後、get_infinite_key.phpを削除します:

rm -f /var/www/fb/htf_feed_reader/get_infinite_key.php

ここで使用するcronジョブスクリプトでは、$facebook->api_client->fbml_refreshRefUrl()関数を使用して、プロフィールページに配置するHTML/FBMLを提供するURLを呼び出します。このURLはHTML/FBMLコードのみを提供する必要があります。私たちのindex.phpスクリプトはHTML/FBMLコードを提供します(Facebookのアプリケーションのキャンバスページ用に、echo $fbml;行を使用)、しかし、$facebook->api_client->profile_setFBML()関数を使用してユーザーのプロフィールも変更します。この場合、cronジョブスクリプトで使用する場合、アプリをインストールした各ユーザーのユーザーIDが必要です。私たちはアプリでこれらのユーザーIDを追跡していないため、プロフィールを更新するために間接的な方法を使用したいと前述しました。

したがって、RSSを解析してHTML/FBMLを表示するコードを別のスクリプトrss.phpに置き、index.phpとcronジョブスクリプトcronjob.phpの両方で呼び出します。さらに、すべての変数設定を含むアプリの設定ファイル(conf.php)を作成し、他のすべてのスクリプトに含めます。

では、始めましょう:

vi /var/www/fb/htf_feed_reader/conf.php

| |

$feedは私たちのRSSフィードのURLであり、$rss_urlは(まだ作成されていない)rss.phpファイルのURLです。この2つを混同しないでください。

conf.phpを使用するようになったので、私たちの新しいappinclude.phpは次のようになります:

vi /var/www/fb/htf_feed_reader/appinclude.php

| require_login(); //無効なsession_keyがクッキーにある場合にスローされる例外をキャッチします try { if (!$facebook->api_client->users_isAppAdded()) { $facebook->redirect($facebook->get_add_url()); } } catch (Exception $ex) { //これにより、アプリケーションのクッキーがクリアされ、ログインプロンプトにリダイレクトされます $facebook->set_user(null, null); $facebook->redirect($appcallbackurl); } ?> |

index.phpは次のようになります:

vi /var/www/fb/htf_feed_reader/index.php

| api_client->profile_setFBML('', $user); $facebook->api_client->fbml_refreshRefUrl($rss_url); ?> |

rss.phpは次のようになります(ここではMagpieRSSのRSSキャッシュをオフにしていますが、必要に応じてオンにできます):

vi /var/www/fb/htf_feed_reader/rss.php

| HowtoForge RSS Feed Reader

'; $fbml .= '
'.$rss->channel['title'].'
'; foreach ($rss->items as $item) { $fbml .= '

'; if($item['description']) $fbml .= $item['description']; $fbml .= '
'; } $fbml .= '
'; echo $fbml; ?> |

最後に、cronjob.phpは次のようになります:

vi /var/www/fb/htf_feed_reader/cronjob.php

| api_client->session_key = $infinite_session_key; // これでFBMLページを更新したり、fb:refタグを更新したりできます。 $facebook->api_client->fbml_refreshRefUrl($rss_url); ?> |

これで、ブラウザでcronjob.phpを直接呼び出すことができます(例:http://fb.howtoforge.com/fb/htf_feed_reader/cronjob.php)して、RSSフィードがFacebookプロフィールで更新されるかどうかをテストできます(もちろん、RSSフィードは以前とは異なる必要があります…)。

すべてが期待通りに動作している場合は、cronjob.phpを30分ごとに呼び出すcronジョブを作成できます(またはお好みの頻度で):

crontab -e

| 0,30 * * * * /usr/bin/wget -O /dev/null http://fb.howtoforge.com/fb/htf_feed_reader/cronjob.php &> /dev/null |

これからは、あなたのRSSリーダーアプリケーションをインストールしたFacebookユーザーのプロフィールが自動的に更新されます。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。