Facebook RSS · 1 min read · Sep 13, 2025
ブログのためのFacebook RSSフィードリーダーアプリケーションの設定方法 - ページ5
7 プロフィールのRSSフィードを自動的に更新する
あなたは、Facebookのアプリケーションのキャンバスページを訪れたときにのみ、プロフィールのRSSフィードが更新されることに気づいたかもしれません。これは問題です。なぜなら、人々はプロフィールページでほとんどの時間を過ごすからです。したがって、プロフィールページのRSSフィードを自動的に更新するには、FacebookのプロフィールでRSSフィードを自動的に更新するcronジョブをサーバーに作成する必要があります。
無限セッションキーを見つけるために、次のように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(' |
rss.phpは次のようになります(ここではMagpieRSSのRSSキャッシュをオフにしていますが、必要に応じてオンにできます):
vi /var/www/fb/htf_feed_reader/rss.php| HowtoForge RSS Feed Reader |
'; foreach ($rss->items as $item) { $fbml .= ''.$rss->channel['title'].'
'; if($item['description']) $fbml .= $item['description']; $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ユーザーのプロフィールが自動的に更新されます。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。