Facebook RSS · 4 min read · Sep 13, 2025

Come impostare un'applicazione lettore RSS di Facebook per il tuo blog - Pagina 5

7 Aggiorna automaticamente il feed RSS sul profilo

Potresti aver notato che il feed RSS sul profilo viene aggiornato solo quando visiti la pagina canvas dell’applicazione su Facebook. Questo è un problema perché le persone trascorrono la maggior parte del loro tempo sulla pagina del profilo. Per aggiornare automaticamente il feed RSS sulla pagina del profilo, dobbiamo quindi creare un cron job sul nostro server che aggiorni automaticamente il feed RSS sui profili Facebook.

Ci sono due modi per aggiornare i profili: diretto e indiretto (vedi http://wiki.developers.facebook.com/index.php/Changing_profile_content). Se il tuo contenuto è individuale per ogni utente, devi utilizzare il metodo diretto, ma se è lo stesso per tutti gli utenti, è molto più facile utilizzare il modo indiretto. Poiché il nostro feed RSS è lo stesso per tutti gli utenti, utilizziamo il modo indiretto, per il quale abbiamo bisogno di una chiave di sessione infinita per la nostra applicazione in modo che il cron job possa accedere a Facebook in qualsiasi momento.

Per scoprire la nostra chiave di sessione infinita, creiamo lo script get_infinite_key.php, come mostrato su 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 la "chiave di sessione infinita" di cui tutti parlano. echo $facebook->api_client->session_key; ?> |

Ora esci da Facebook nel tuo browser e cancella tutti i cookie, o ancora meglio, usa un altro browser in cui non hai mai visitato Facebook prima (il mio browser predefinito è Firefox, quindi uso SeaMonkey per questo), e chiama quello script nel tuo browser (ad es. http://fb.howtoforge.com/fb/htf_feed_reader/get_infinite_key.php).

Ti verrà quindi chiesto di accedere a Facebook. Assicurati di controllare la casella Salva le mie informazioni di accesso per evitare di dover accedere nuovamente a Facebook per utilizzare questa applicazione:

Dopo, dovrebbe apparire una pagina che mostra la chiave di sessione infinita della tua applicazione. Ti preghiamo di annotarla da qualche parte:

Elimina get_infinite_key.php dopo:

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

Nello script del cron job che userò qui, utilizzerò la funzione $facebook->api_client->fbml_refreshRefUrl() per chiamare un URL che fornisce l’HTML/FBML da mettere sulle pagine del profilo. Questo URL dovrebbe fornire solo il codice HTML/FBML; il nostro script index.php fornisce codice HTML/FBML (per la pagina canvas dell’applicazione su Facebook, utilizzando la riga echo $fbml;), ma cambia anche i profili degli utenti con la funzione $facebook->api_client->profile_setFBML(), per la quale avremmo bisogno degli ID utente di ciascun utente che ha installato la nostra app se lo usassimo nel nostro script del cron job. Non abbiamo questi ID utente perché non li tracciamo con la nostra app, e come ho detto prima, vogliamo utilizzare il metodo indiretto per aggiornare i profili.

Pertanto metterò il codice per analizzare il RSS e mostrare l’HTML/FBML in uno script separato, rss.php, che chiamerò sia in index.php che nel nostro script del cron job, cronjob.php. Inoltre, creerò un file di configurazione (conf.php) per la nostra app che contiene tutte le impostazioni delle variabili e che è incluso in tutti gli altri script.

Quindi iniziamo:

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

| |

$feed è l’URL del nostro feed RSS, e $rss_url è l’URL del nostro file rss.php (che deve ancora essere creato). Ti preghiamo di non confondere questi due.

Ora che utilizziamo conf.php, il nostro nuovo appinclude.php appare così:

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

| require_login(); //cattura l'eccezione che viene sollevata se il cookie ha una session_key non valida try { if (!$facebook->api_client->users_isAppAdded()) { $facebook->redirect($facebook->get_add_url()); } } catch (Exception $ex) { //questo cancellerà i cookie per la tua applicazione e li reindirizzerà a un prompt di accesso $facebook->set_user(null, null); $facebook->redirect($appcallbackurl); } ?> |

index.php appare così:

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

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

rss.php appare così (ho disattivato la cache RSS per MagpieRSS qui, ma puoi attivarla, se vuoi):

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

| Lettore RSS di HowtoForge

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

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

E infine, cronjob.php appare così:

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

| api_client->session_key = $infinite_session_key; // Ora puoi aggiornare le pagine FBML, aggiornare i tuoi tag fb:ref, ecc. $facebook->api_client->fbml_refreshRefUrl($rss_url); ?> |

Ora puoi chiamare direttamente cronjob.php nel tuo browser (ad es. http://fb.howtoforge.com/fb/htf_feed_reader/cronjob.php) per testare se il tuo feed RSS viene aggiornato sul tuo profilo Facebook (ovviamente, il tuo feed RSS deve essere diverso da prima…).

Se tutto funziona come previsto, puoi creare un cron job che chiama cronjob.php ogni 30 minuti (o quanto spesso desideri):

crontab -e

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

Da ora in poi, i profili degli utenti di Facebook che hanno installato la tua applicazione lettore RSS verranno aggiornati automaticamente.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.