Un approccio che funziona nel 2019
Recentemente stavo cercando di ottenere qualcosa di simile (al caso d'uso descritto in questo thread), ma volevo assicurarmi di rispettare le attuali politiche di Facebook, quindi ho fatto una piccola ricerca e qui sto condividendo ciò che ho trovato.
Il mio caso d'uso
Quindi, come ho già detto, il mio caso d'uso è molto simile a quello qui descritto; questo è:
- Sto facendo dei lavori per un distretto scolastico.
- Utilizzano uno strumento software per gestire praticamente tutto ciò che riguarda il trasporto scolastico.
- Questo strumento consente loro di inviare notifiche e-mail (agli abbonati) quando pubblicano avvisi di ritardo dell'autobus e avvisi di chiusura della scuola.
- Molte persone nella comunità seguono l'organizzazione sulla loro pagina Facebook, ed è l'unico posto in cui cercano quegli avvisi.
- Quindi un dipendente dell'organizzazione deve pubblicare manualmente ogni notifica sulla pagina Facebook (oltre a crearla nel software di trasporto). Inoltre, tali notifiche alla fine scadono (o vengono semplicemente eliminate prima della scadenza), quindi il dipendente deve tornare indietro in un secondo momento per eliminarle manualmente.
- È una perdita di tempo, quindi quello che stiamo cercando di fare qui è sviluppare un sistema semplice che interroghi periodicamente il database dello strumento software per nuove (e scadute) notifiche e aggiornale (cioè aggiungi e rimuovi) sulla pagina Facebook.
Questo è, a mio avviso, un caso d'uso legittimo, ma non ero sicuro di come implementarlo in un modo in linea con le politiche di Facebook.
La risposta accettata
Ho seguito i passaggi della risposta accettata e ha funzionato, tranne per il fatto che le cose sembrano essere cambiate: ora, anche se il token della pagina generato non scade, access to data
scade dopo circa 60 giorni. Lo vedrai anche se segui la procedura e ispeziona il token della pagina nello strumento di debug dei token FB .
Inoltre, il fatto che i token della pagina generati siano legati all'account utente è anche un peccato, perché se l'utente aggiorna la sua password, anche il token della pagina viene invalidato.
Come farlo nel 2019
Dopo diverse ore di ricerca, mi sono imbattuto nel seguente articolo della documentazione di Facebook: Accesso aziendale per aziende dirette .
Risulta che ora è possibile, seguendo i passaggi descritti nell'articolo precedente, generare un token di pagina che non è associato a nessun particolare account utente Facebook e che non scadrà (a meno che l'app FB non venga cancellata o il token dell'applicazione sottostante viene cancellato, sai ...)
Quindi ecco i passaggi e le parti più importanti:
- Hai bisogno di un account Business Manager .
- Sarà richiesta la verifica e dovrà essere firmato un contratto digitale.
- Devi aggiungere la pagina Facebook di destinazione a quell'account.
- È necessario creare un'app Facebook e trasferire anche quell'app allo stesso account Business Manager.
- L'app dovrà passare attraverso il processo di revisione di Facebook, perché saranno necessarie le seguenti autorizzazioni:
manage_pages
e publish_pages
.
- Nota importante Affinché i post creati utilizzando il token di generazione della pagina siano visibili agli utenti diversi dagli amministratori dell'applicazione, tale app dovrà essere stata pubblicata e approvata.
- Puoi ancora sperimentare il concetto senza sottoporlo a revisione, ma i post non saranno visibili pubblicamente.
- Nell'account Business Manager (solo dopo che l'app e la pagina sono state aggiunte all'account), è necessario creare quello che viene chiamato un utente di sistema e assegnare a tale utente il ruolo di amministratore (o autorizzazioni) alla pagina Facebook di destinazione.
- Un utente di sistema è di proprietà dell'account Business Manager e non è legato a un utente specifico. La mia comprensione attuale è che uno dei principali casi d'uso per un utente di sistema è l'accesso programmatico all'API Graph di Facebook (proprio quello di cui abbiamo bisogno).
- Quindi, per quell'utente di sistema, è necessario generare un token di accesso (che non scadrà mai). Ti verrà chiesto di selezionare per quale app. Seleziona quindi la tua app di destinazione.
- Sarà quindi necessario utilizzare il token dell'app generato per generare un token di pagina, che non avrà scadenza. La procedura è descritta in questo articolo come:
GET /<PAGE_ID>?fields=access_token&access_token=<SYSTEM_USER_ACCESS_TOKEN>
Quel token non scadrà mai e non sarà legato a un particolare utente di Facebook, quindi è esattamente ciò di cui abbiamo bisogno!
L'ultima parte è assicurarti che la tua app Facebook venga approvata da Facebook. In effetti è la parte più importante, perché l'intera procedura è inutile se le persone non vedono i nostri post.
Volevo sapere con certezza che avrei potuto fare affidamento sulla procedura di cui sopra per creare qualcosa per il mio cliente senza che Facebook alla fine lo rifiutasse, quindi, in anticipo (cioè prima di iniziare a lavorare sul progetto del mio cliente), ho seguito l'intero processo di creando una pagina, un'app, un account Business Manager, ecc. Ho verificato la mia attività. Ho inviato la mia app per la revisione. Nella mia richiesta, ero molto specifico sul mio caso d'uso e ho sottolineato che l'app era per "auto-utilizzo" (cioè che l'organizzazione sta sviluppando un'app per se stessa, non per altri utenti di Facebook). Sono stato approvato senza meno di 24 ore.
Alcune altre note sul processo di revisione dell'app:
- Ho dovuto selezionare una piattaforma per l'app, quindi ho selezionato il sito web .
- Dovevo indicare perché l'app necessitava delle due autorizzazioni e come le avrebbe utilizzate.
- Ho dovuto indicare il motivo per cui il revisore non sarebbe stato in grado di accedere alla mia app e provarla (ovvero perché l'app verrà utilizzata da un processo di lavoro).
- Per gli screencast obbligatori, ho semplicemente presentato le operazioni manuali nel terminale utilizzando l'
curl
utility (per generare il token della pagina e creare post sulla pagina Facebook). Ho anche mostrato come stavo utilizzando Business Manager per collegare l'utente del sistema alla pagina e generare un token, e così via.
- Di nuovo, ero molto specifico sul mio caso d'uso e penso che questo abbia aiutato.
Spero che queste informazioni siano utili a persone con casi d'uso simili.