Facebook RSS · 4 min read · Sep 13, 2025
Como Configurar Um Aplicativo Leitor de RSS do Facebook Para Seu Blog - Página 5
7 Atualizar Automaticamente O Feed RSS No Perfil
Você pode ter notado que o feed RSS no perfil é atualizado apenas quando você visita a página do canvas do aplicativo no Facebook. Isso é um problema porque as pessoas passam a maior parte do tempo na página do perfil. Para atualizar automaticamente o feed RSS na página do perfil, devemos, portanto, criar um cron job em nosso servidor que atualiza automaticamente o feed RSS nos perfis do Facebook.
Existem duas maneiras de atualizar perfis: direta e indireta (veja http://wiki.developers.facebook.com/index.php/Changing_profile_content). Se seu conteúdo for individual para cada usuário, você deve usar o método direto, mas se for o mesmo para todos os usuários, é muito mais fácil usar o caminho indireto. Como nosso feed RSS é o mesmo para todos os usuários, usamos o caminho indireto, para o qual precisamos de uma chave de sessão infinita para nosso aplicativo, para que o cron job possa fazer login no Facebook a qualquer momento.
Para descobrir nossa chave de sessão infinita, criamos o script get_infinite_key.php, conforme mostrado em 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(); // Ecoa a "chave de sessão infinita" que todos continuam falando. echo $facebook->api_client->session_key; ?> |
Agora saia do Facebook no seu navegador e limpe todos os cookies, ou ainda melhor, use outro navegador no qual você nunca visitou o Facebook antes (meu navegador padrão é o Firefox, então eu uso o SeaMonkey para isso), e chame esse script no seu navegador (por exemplo, http://fb.howtoforge.com/fb/htf_feed_reader/get_infinite_key.php).
Você será solicitado a fazer login no Facebook. Por favor, certifique-se de marcar a caixa Salvar minhas informações de login para evitar fazer login no Facebook novamente para usar esta aplicação:

Depois, uma página deve aparecer mostrando a chave de sessão infinita do seu aplicativo. Por favor, anote-a em algum lugar:

Exclua get_infinite_key.php depois:
rm -f /var/www/fb/htf_feed_reader/get_infinite_key.phpNo script do cron job que usarei aqui, usarei a função $facebook->api_client->fbml_refreshRefUrl() para chamar uma URL que entrega o HTML/FBML a ser colocado nas páginas de perfil. Esta URL deve entregar nada além do código HTML/FBML; nosso script index.php entrega código HTML/FBML (para a página do canvas do aplicativo no Facebook, usando a linha echo $fbml;), mas também altera os perfis dos usuários com a função $facebook->api_client->profile_setFBML(), para a qual precisaríamos dos IDs de usuário de cada usuário que instalou nosso aplicativo se o usássemos em nosso script de cron job. Não temos esses IDs de usuário porque não os rastreamos com nosso aplicativo, e como disse antes, queremos usar o método indireto para atualizar os perfis.
Portanto, colocarei o código para analisar o RSS e mostrar o HTML/FBML em um script separado, rss.php, que chamarei tanto em index.php quanto em nosso script de cron job, cronjob.php. Além disso, criarei um arquivo de configuração (conf.php) para nosso aplicativo que contém todas as configurações de variáveis e que é incluído em todos os outros scripts.
Então vamos começar:
vi /var/www/fb/htf_feed_reader/conf.php| |
$feed é a URL do nosso feed RSS, e $rss_url é a URL do nosso arquivo (ainda a ser criado) rss.php. Por favor, não confunda esses dois.
Agora que usamos conf.php, nosso novo appinclude.php fica assim:
vi /var/www/fb/htf_feed_reader/appinclude.php| require_login(); //captura a exceção que é lançada se o cookie tiver uma session_key inválida try { if (!$facebook->api_client->users_isAppAdded()) { $facebook->redirect($facebook->get_add_url()); } } catch (Exception $ex) { //isso irá limpar os cookies para seu aplicativo e redirecioná-los para um prompt de login $facebook->set_user(null, null); $facebook->redirect($appcallbackurl); } ?> |
index.php fica assim:
vi /var/www/fb/htf_feed_reader/index.php| api_client->profile_setFBML(' |
rss.php fica assim (desativei o cache RSS para o MagpieRSS aqui, mas você pode ativá-lo, se quiser):
vi /var/www/fb/htf_feed_reader/rss.php| Leitor de Feed RSS do HowtoForge |
'; foreach ($rss->items as $item) { $fbml .= ''.$rss->channel['title'].'
'; if($item['description']) $fbml .= $item['description']; $fbml .= '
E finalmente, cronjob.php fica assim:
vi /var/www/fb/htf_feed_reader/cronjob.php| api_client->session_key = $infinite_session_key; // Agora você pode atualizar páginas FBML, atualizar suas tags fb:ref, etc. $facebook->api_client->fbml_refreshRefUrl($rss_url); ?> |
Agora você pode chamar diretamente cronjob.php no seu navegador (por exemplo, http://fb.howtoforge.com/fb/htf_feed_reader/cronjob.php) para testar se seu feed RSS é atualizado no seu perfil do Facebook (claro, seu feed RSS deve ser diferente do anterior…).
Se tudo estiver funcionando como esperado, você pode criar um cron job que chama cronjob.php a cada 30 minutos (ou com a frequência que desejar):
crontab -e| 0,30 * * * * /usr/bin/wget -O /dev/null http://fb.howtoforge.com/fb/htf_feed_reader/cronjob.php &> /dev/null |
A partir de agora, os perfis dos usuários do Facebook que instalaram seu aplicativo leitor de RSS serão atualizados automaticamente.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.