페이스북 설정 · 3 min read · Sep 13, 2025

블로그를 위한 페이스북 RSS 피드 리더 애플리케이션 설정 방법 - 5페이지

7 프로필에서 RSS 피드를 자동으로 업데이트하기

당신은 아마도 페이스북의 애플리케이션 캔버스 페이지를 방문할 때만 프로필의 RSS 피드가 업데이트된다는 것을 알았을 것입니다. 이는 사람들이 대부분의 시간을 프로필 페이지에서 보내기 때문에 문제입니다. 따라서 프로필 페이지에서 RSS 피드를 자동으로 업데이트하려면, RSS 피드를 페이스북 프로필에서 자동으로 업데이트하는 크론 작업을 서버에서 생성해야 합니다.

프로필을 업데이트하는 방법에는 두 가지가 있습니다: 직접 방법과 간접 방법(자세한 내용은 http://wiki.developers.facebook.com/index.php/Changing_profile_content 참조). 각 사용자에 대한 콘텐츠가 개별적이라면 직접 방법을 사용해야 하지만, 모든 사용자에게 동일하다면 간접 방법을 사용하는 것이 훨씬 쉽습니다. 우리의 RSS 피드는 모든 사용자에게 동일하므로, 우리는 간접 방법을 사용합니다. 이를 위해서는 크론 작업이 언제든지 페이스북에 로그인할 수 있도록 애플리케이션에 대한 무한 세션 키가 필요합니다.

무한 세션 키를 찾기 위해, 우리는 http://wiki.developers.facebook.com/index.php/Infinite_session_howto에 표시된 대로 get_infinite_key.php 스크립트를 생성합니다:

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

| require_frame(); $user = $facebook->require_login(); // 모두가 이야기하는 "무한 세션 키"를 출력합니다. echo $facebook->api_client->session_key; ?> |

이제 브라우저에서 페이스북에서 로그아웃하고 모든 쿠키를 지우거나, 더 나은 방법으로는 페이스북을 한 번도 방문하지 않은 다른 브라우저를 사용하여 (내 기본 브라우저는 Firefox이므로 SeaMonkey를 사용합니다) 브라우저에서 해당 스크립트를 호출합니다 (예: http://fb.howtoforge.com/fb/htf_feed_reader/get_infinite_key.php).

그런 다음 페이스북에 로그인하라는 메시지가 표시됩니다. 이 애플리케이션을 사용하기 위해 다시 페이스북에 로그인하지 않도록 로그인 정보를 저장하는 체크박스를 선택했는지 확인하십시오:

그 후, 애플리케이션의 무한 세션 키를 보여주는 페이지가 나타납니다. 이를 어딘가에 적어 두십시오:

그 후 get_infinite_key.php를 삭제하십시오:

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

여기서 사용할 크론 작업 스크립트에서는 $facebook->api_client->fbml_refreshRefUrl() 함수를 사용하여 프로필 페이지에 넣을 HTML/FBML을 제공하는 URL을 호출합니다. 이 URL은 HTML/FBML 코드만 제공해야 합니다. 우리의 index.php 스크립트는 HTML/FBML 코드를 제공하지만 (echo $fbml; 라인을 사용하여 페이스북의 애플리케이션 캔버스 페이지에 대해), 또한 $facebook->api_client->profile_setFBML() 함수를 사용하여 사용자의 프로필을 변경합니다. 이를 위해서는 우리 애플리케이션을 설치한 각 사용자의 사용자 ID가 필요하지만, 우리는 이러한 사용자 ID를 추적하지 않기 때문에, 간접 방법을 사용하여 프로필을 업데이트하고자 합니다.

따라서 RSS를 파싱하고 HTML/FBML을 표시하는 코드를 별도의 스크립트인 rss.php에 넣고, 이를 index.php와 크론 작업 스크립트인 cronjob.php에서 호출하겠습니다. 또한 모든 변수 설정을 포함하는 구성 파일(conf.php)을 생성하여 모든 다른 스크립트에서 포함하도록 하겠습니다.

자, 시작해 보겠습니다:

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

| |

$feed는 우리의 RSS 피드의 URL이고, $rss_url은 (아직 생성되지 않은) rss.php 파일의 URL입니다. 이 두 가지를 혼동하지 마십시오.

이제 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 피드가 페이스북 프로필에서 업데이트되는지 테스트할 수 있습니다 (물론, RSS 피드는 이전과 달라야 합니다…).

모든 것이 예상대로 작동하면, cronjob.php를 30분마다 호출하는 크론 작업을 생성할 수 있습니다 (원하는 만큼 자주 호출할 수 있습니다):

crontab -e

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

이제부터는 RSS 리더 애플리케이션을 설치한 페이스북 사용자들의 프로필이 자동으로 업데이트됩니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.