API dei social network: il portale di Internet verso il mondo reale
Pubblicato: 2022-03-11Le API dei social network hanno fatto molta strada da quando Google ha rilasciato la prima versione della sua API YouTube nel maggio 2008 e Facebook ha rilasciato la prima versione dell'API Graph nell'aprile 2010. Oggi, queste API ti danno l'opportunità di interrogare le piattaforme dei social network per i post , utenti, canali e dati demografici. Ti consentono persino di creare il tuo servizio o di saperne di più sulla tua base di utenti.
In questo articolo, esamineremo i modi in cui possiamo utilizzare alcune delle popolari API dei social network:
- Facebook (API grafico e marketing)
- Youtube
Discuteremo anche i loro limiti ed esploreremo alcuni degli strumenti utili disponibili per l'uso con queste API. Più avanti nell'articolo, daremo anche un'occhiata a come integrare queste API in qualsiasi applicazione Rails.
Mi concentrerò su un'API di social network alla volta e ne spiegherò le capacità, i limiti e gli strumenti disponibili. Ci sarà una matrice con le diverse API e le loro proprietà per un migliore confronto più avanti in questo articolo.
Per utilizzare le API dovrai prima configurare un'app che crei query per conto della tua applicazione con richieste basate su OAuth. Gli utenti si autenticheranno sulla tua app e potrai quindi accedere ai loro dati con il token di accesso utente risultante.
L'ormai obsoleto FQL (Facebook Query Language) era un linguaggio di query simile a SQL che poteva essere utilizzato per accedere a tutti i dati da Facebook.
Facebook ha rilasciato la prima versione della sua API Graph nell'aprile 2010. La versione più recente al momento della stesura di questo articolo è la 2.6, introdotta il 12 aprile 2016. È un'API basata su HTTP di basso livello che può essere utilizzata per eseguire query dati, creare post e persino creare campagne pubblicitarie automatizzate.
Utensili
Graph API Explorer è lo strumento più comunemente utilizzato quando si lavora con l'API di Facebook. Ti consente di eseguire query API Graph nel browser ed esaminare i risultati: puoi utilizzare uno dei token di accesso della tua app o crearne uno al volo con ambiti selezionati.
Capacità
L'API Graph è un'API basata su REST che consente di creare, aggiornare ed eliminare oggetti per richiesta HTTP su determinati nodi.
Token di accesso
Per eseguire query sull'API Graph, è necessario un token di accesso che viene ottenuto non appena un utente autorizza correttamente nella tua app. Il token di accesso dovrebbe essere archiviato dalla tua applicazione.
Ambiti
Gli ambiti determinano quali azioni possono essere eseguite per conto di un utente. L'applicazione richiede determinati ambiti quando un utente autorizza in un'app. L'ambito publish_actions
, ad esempio, consente a un'app di pubblicare post per conto di un utente. L'ambito dell'e-mail consente all'app di leggere l'e-mail dell'utente. Una panoramica completa di tutti gli ambiti è elencata nella documentazione ufficiale.
Alcuni ambiti come publish_actions
o ads_management
richiedono una revisione da parte di Facebook prima del rilascio dell'app.
Esempi
Per dimostrare come funziona l'API Graph, ti mostrerò come leggere, creare, aggiornare ed eliminare post con l'API.
Per ottenere i tuoi post, puoi eseguire la query GET /me/posts
. Il risultato sarà una stringa JSON con un elenco di post, incluso il loro messaggio, create_time e id. Puoi usare il pretty
parametro o un formattatore JSON per rendere la risposta meno disordinata.
Per ottenere più dati sui tuoi post, puoi estendere la query con campi come parametri di query. Ad esempio, la query me/posts?fields=reactions, picture
ti darà l'immagine e le reazioni del post.
Per creare un post, puoi semplicemente inviare un'azione POST contro il feed edge, ad esempio me/feed
, con parametri come message: hello world
. L'API Graph restituirà un oggetto JSON con l'ID del post creato. È quindi possibile visualizzare il post all'indirizzo http://facebook.com/[post_id]
.
Per aggiornare un post, puoi inviare una richiesta POST al nodo del post con i campi da aggiornare come parametri; ad esempio, /[post_id]
e parametri come Message: lorem ipsum
. Verrà restituito un indicatore di successo con un valore true o false.
Per eliminare un post, puoi semplicemente fare una richiesta DELETE al nodo con l'ID del post (ad esempio, /[post_id]
). Il valore restituito sarà un oggetto JSON con un valore di successo true o false.
Una panoramica completa su tutti i nodi e le azioni è disponibile in Graph API Reference.
API di marketing
L'API di marketing merita una menzione speciale perché è un potente strumento per gestire gli annunci di Facebook e ottenere approfondimenti sugli annunci tramite la tua applicazione.
Funziona allo stesso modo degli altri metodi dell'API Graph. Tuttavia, è necessario l'ambito ads_management
per ottenere l'accesso agli annunci dell'utente. Facebook ha anche bisogno di rivedere la tua app prima che tu possa pubblicarla.
Test
Una volta creata, l'app è in modalità di sviluppo ed è automaticamente visibile nella dashboard dell'app (ad esempio, https://developers.facebook.com/apps/
).
Nella modalità di sviluppo, solo gli amministratori, gli sviluppatori e i tester hanno accesso alla tua app. Puoi aggiungere tester e amministratori nella sezione ruoli della dashboard dell'app.
Processo di revisione
Quando aggiungi determinate autorizzazioni, Facebook deve rivedere la tua app prima che tu possa pubblicarla. Il processo di revisione è definito da questo insieme di linee guida.
Per inviare determinati elementi per la revisione, puoi semplicemente aggiungerli nella sezione Revisione app della dashboard dell'app. Facebook ti guiderà quindi attraverso il processo di revisione e verrai avvisato una volta che la tua app sarà approvata.
Limitazioni e soluzioni alternative
Limiti tariffari
Un'app può effettuare 200 chiamate all'ora per utente in totale. Se raggiungi tale limite, le tue chiamate API risulteranno in errore.
Ricerca di post su Facebook
Facebook limita la ricerca di post e tag su Facebook tramite l'API Graph e FQL. Tuttavia, puoi utilizzare l'API di ricerca di Google per cercare post pubblici di Facebook e quindi utilizzare l'ID post nell'URL per recuperare ulteriori informazioni su post specifici tramite l'API Graph.
Ottenere dati sul pubblico personalizzati
Audience Insights su Facebook è un potente strumento di ricerca per saperne di più su un pubblico particolare in base a interessi, dati demografici o altri attributi (ad esempio, una raccolta di indirizzi e-mail).
Tuttavia, non ho trovato un modo per creare automaticamente informazioni sul pubblico tramite l'API dell'annuncio. Fateci sapere nei commenti se avete idee creative o suggerimenti per questo.
L'API di Instagram è stata rilasciata per la prima volta nell'aprile 2014 e consente di creare app che analizzano i post degli utenti e aiutano gli utenti a gestire i propri post.
Utensili
Poiché la console API di Instagram è obsoleta al momento di questo articolo, ti consiglio di utilizzare Apigee a scopo di test nel tuo browser.
Capacità
L'API di Instagram è un'API basata su REST. Tutti i suoi endpoint sono descritti nella loro documentazione ufficiale.
Token di accesso
Per eseguire query sull'API di Instagram, è necessario un token di accesso che si ottiene non appena un utente autorizza nella tua app. Affinché un utente possa ricevere un token di accesso, deve essere indirizzato all'URL di autorizzazione della tua app. Il server reindirizzerà quindi l'utente dopo aver autorizzato la tua app e sarai quindi in grado di leggere il token.
Ambiti
La tua app può richiedere autorizzazioni diverse. Ad esempio, "base" ti limita a leggere le informazioni sul profilo e i media di un utente. "public_content" ti consente di leggere qualsiasi profilo pubblico e media per conto di un utente.
Esempi
Per dimostrare come funziona l'API di Instagram, esaminerò alcuni esempi basati sull'endpoint multimediale https://api.instagram.com/v1/media/popular
.
Questo endpoint restituisce i media attualmente popolari da Instagram se è passato un token di accesso come parametro. Il risultato sarà una matrice JSON di post contenente, per ciascuno, il suo ID media, un collegamento alla sua immagine, Mi piace, commenti, l'utente che lo ha pubblicato e alcuni altri attributi.
Puoi utilizzare apigee per giocare e scoprire di più sugli endpoint dell'API e sui loro parametri.
Test
Ogni nuova app creata sulla piattaforma Instagram inizia in modalità sandbox. Questo è un ambiente completamente funzionale che ti consente di testare gli endpoint API disponibili pubblicamente prima di inviare la tua app per la revisione.
Per testare la tua app, crea semplicemente una versione di staging ed esegui tutte le query attraverso quella versione invece della versione live che ha superato la revisione.
Processo di revisione
Le app in modalità sandbox possono utilizzare qualsiasi endpoint API, ma sono limitate a un numero limitato di utenti e media. È un ottimo meccanismo per sviluppare e testare un'app.
Per andare in diretta e accedere a tutti i contenuti di Instagram, dovrai inviare la tua domanda per la revisione. Una volta esaminata, potrai richiedere gli ambiti solo per gli utenti per i quali la tua app è stata approvata.
Limitazioni e soluzioni alternative
Analisi demografica
Al momento della stesura di questo articolo, non c'è modo di ottenere informazioni sull'età, il sesso o gli interessi di un utente pubblico, perché Instagram non fornisce tali informazioni.
Per ottenere dati demografici sui follower o un elenco di utenti di Instagram, dovresti scorrere tutti loro e provare a determinare la loro età, sesso o interessi in base ai loro follower o alle informazioni fornite nella loro biografia.
Una buona soluzione per i big data per questo problema potrebbe essere un servizio prezioso per alcune aziende.
Limiti tariffari
Tutti i limiti di tariffa sulla piattaforma Instagram sono controllati da token di accesso su una finestra scorrevole di 1 ora. Le app live hanno limiti di velocità più elevati rispetto alle app in modalità sandbox. Il limite di velocità globale per un'app live è attualmente di 5.000 chiamate all'ora.
L'API di Twitter è stata rilasciata per la prima volta nel settembre 2006. È un'API REST pubblica che fornisce l'accesso in lettura e scrittura ai dati di Twitter. L'autenticazione viene eseguita utilizzando OAuth. Le risposte sono in formato JSON.
Utensili
Twitter ha uno strumento console API basato su apigee che può essere utilizzato per testare le richieste nel browser.
Capacità
L'API REST ti consente di ottenere i tweet, i follower e le persone seguite di un utente. Puoi anche cercare hashtag in altri tweet.
Token di accesso
Twitter ti consente di creare app su cui gli utenti possono autenticarsi in cambio di un token di accesso. Il modello di autenticazione è OAuth.
Ambiti
Ci sono solo due autorizzazioni che devono essere impostate nella pagina delle impostazioni dell'app: sola lettura e lettura e scrittura. Quest'ultimo ti consente di creare tweet ed eseguire altre azioni di post per conto di un utente.
Esempi
Per dimostrare l'utilizzo dell'API di Twitter, recupererò i tweet dell'utente autorizzato. Il risultato è un array JSON con le immagini, i preferiti, i retweet, gli URL, la data di creazione e altri attributi del tweet. Usa Apigee per giocare e scoprire di più sugli endpoint dell'API e sui relativi parametri.
Processo di test e revisione
Al momento non è disponibile alcun processo di revisione o modalità di test per l'API di Twitter.
Limitazioni e soluzioni alternative
Analisi demografica
Al momento non esiste un modo semplice per ottenere dati demografici dai follower su Twitter di qualcuno. L'approccio della forza bruta sarebbe quello di sfogliare ogni seguace e cercare di ottenere i dati attraverso i loro account di social network bio e collegati.

È quindi possibile effettuare ulteriori ipotesi sulla base dei dati dei follower raccolti tramite l'analisi dei dati. Un altro modo per ottenere maggiori informazioni è attraverso GNIP, la piattaforma API aziendale a pagamento di Twitter. Tra le altre cose, ti consente di creare segmenti di pubblico e ottenere informazioni su di essi tramite l'API. L'API è attualmente in versione BETA.
Limiti tariffari
Twitter ha limiti di velocità per utente e per 15 minuti. Se la tua applicazione ha più token, puoi semplicemente alternare i token per le operazioni pubbliche per evitare di raggiungere il limite.
Youtube
L'API dei dati di YouTube è stata introdotta per la prima volta nel gennaio 2013. Ti consente di aggiungere funzionalità di YouTube alla tua applicazione, cercare contenuti e analizzare i dati demografici di un canale YouTube. È un'API REST OAuth basata su token che restituisce risposte JSON.
Utensili
L'API Explorer ti consente di testare le richieste non autorizzate e autorizzate. Puoi eseguire richieste dal tuo browser sugli endpoint forniti.
Capacità
Tra le altre cose, puoi lavorare con attività, chat, trasmissioni in diretta, playlist, canali, video e abbonamenti. La maggior parte degli endpoint richiede l'autorizzazione con un account YouTube.
Token di accesso
L'API dei dati di YouTube supporta il protocollo OAuth 2.0 per autorizzare l'accesso ai dati privati degli utenti. Una volta che un utente è stato autorizzato nella tua applicazione, verrà reindirizzato alla tua applicazione dove deve essere salvato il token di accesso.
Per utilizzare l'autorizzazione OAuth 2.0, devi prima ottenere le credenziali di autorizzazione nella Console per gli sviluppatori di Google.
Ambiti
L'API dei dati di YouTube attualmente supporta i seguenti ambiti:
- Forza SSL: gestisci il tuo account YouTube ma solo tramite una connessione SSL.
- Predefinito - Gestisci il tuo account YouTube. Questo ambito è funzionalmente identico all'ambito youtube.force-ssl ma non richiede una connessione SSL.
- Sola lettura - Visualizza il tuo account YouTube.
- Carica: carica i video di YouTube e gestisci i tuoi video di YouTube.
- Partner Channel Audit - Recupera le informazioni che le reti multicanale utilizzano come criteri per accettare o rifiutare un canale nella propria rete.
Esempi
Come esempio di utilizzo della Youtube Data API, le seguenti query richiedono video con "codifica" nel titolo e nella descrizione:
https://www.googleapis.com/youtube/v3/search?part=snippet&q=coding&key={YOUR_API_KEY}
Il risultato è un oggetto JSON contenente il titolo, la descrizione, l'ID video e l'ID canale. Puoi usare quest'ultimo per saperne di più sul canale.
Il parametro part
è obbligatorio per qualsiasi richiesta API che restituisce una determinata risorsa. Il parametro identifica le proprietà della risorsa che devono essere incluse in una risposta API. Ad esempio, una risorsa video ha le seguenti parti: snippet, contentDetails, fileDetails, player, processingDetails, recordingDetails, statistiche, stato, suggerimenti, topicDetails.
Tutti gli altri parametri, ad eccezione della chiave API, differiscono da chiamata a chiamata. Maggiori informazioni a riguardo nella guida di riferimento API.
L'API Pinterest è stata inizialmente rilasciata nell'aprile 2015. È un'API RESTful che fornisce l'accesso ai dati Pinterest di un utente, come bacheche, pin, follower e altro. L'API di Pinterest utilizza OAuth e consente autorizzazioni di lettura e scrittura quando si interagisce con i contenuti di un utente.
Utensili
Come altri, Pinterest fornisce un API Explorer per testare i loro endpoint ed eseguire query su di essi. Puoi dare un'occhiata a tutti i loro strumenti qui.
Capacità
L'API REST di Pinterest ti consente di creare pin, bacheche e interrogare i dati di Pinterest con OAuth.
Token di accesso
Pinterest utilizza OAuth 2.0 per autenticare le richieste tra la tua app e i tuoi utenti. Tutte le richieste devono essere effettuate tramite HTTPS.
Ambiti
Gli ambiti determinano cosa può fare un'app per conto di un utente. Pinterest utilizza i seguenti ambiti:
-
none
(deve conoscere l'identificatore): usa il metodo GET sul profilo di un utente, sui dettagli della bacheca e del Pin e sui Pin su una bacheca. -
read_public
: usa il metodo GET su Pin, bacheche e Mi piace di un utente. -
write_public
: usa i metodi PATCH, POST e DELETE sui Pin e sulle bacheche di un utente. -
read_relationships
: usa il metodo GET sui follower e sui follower di un utente (sulle bacheche, utenti e interessi). -
write_relationships
: usa i metodi PATCH, POST e DELETE sui follower e sui follower di un utente (su bacheche, utenti e interessi).
Esempi
Per dimostrare l'uso dell'API di Pinterest, dimostrerò come leggere gli ultimi pin dell'utente:
https://api.pinterest.com/v1/me/pins/?access_token={your_token}&fields=id,link,note,url,counts,board,created_at
restituirà i pin di un utente con il loro id, link, nota, URL, Mi piace e repin.
Processo di test e revisione
Le app sono inizialmente in modalità di sviluppo e devono essere inviate per la revisione prima di essere rilasciate in modalità di produzione.
Limitazioni e soluzioni alternative
Analisi demografica
Non esiste un modo comune per ottenere dati demografici da una scheda. Tuttavia, puoi provare a ottenere i follower di una bacheca e informazioni su di loro dalla loro biografia e collegamenti ad altri account di social network. Sarebbe anche possibile una soluzione per big data sulle connessioni comuni dell'utente.
Cerca Pin
Al momento non è possibile cercare pin con determinati tag o parole chiave tramite l'API. Puoi aggirare questa limitazione utilizzando l'API di ricerca personalizzata di Google per cercare risultati solo sui pin di Pinterest e raccogliere l'ID pin tramite l'URL. L'ID può quindi essere utilizzato per ottenere informazioni sul pin tramite l'API.
Limiti tariffari
A ogni app (con un ID app univoco) sono consentite 1.000 chiamate per endpoint all'ora per ogni token utente univoco.
Ogni risposta API restituisce un'intestazione che ti fornisce un aggiornamento sui limiti di frequenza. X-Ratelimit-Limit è il limite di velocità per quella specifica richiesta e X-Ratelimit-Remaining è il numero di richieste che hai lasciato nella finestra di 60 minuti.
Se superi il limite di velocità per un determinato endpoint, riceverai un codice di errore 429 "Troppe richieste".
Confronto delle API dei social network
Versione | OAuth | Formato | Demografia | |
---|---|---|---|---|
v2.6 Uscita iniziale: aprile 2010 | OAuth 2 | Richieste REST con risposte JSON | Supportato | |
v1 Versione iniziale: aprile 2014 | OAuth 2 | Richieste REST con risposte JSON | Non supportato | |
v1.1 Uscita iniziale: settembre 2006 | OAuth 1 | Richieste REST con risposte JSON | Supportato solo con GNIP | |
Youtube | v3 Versione iniziale: gennaio 2013 | OAuth 2 | Richieste REST con risposte JSON | Supportato |
v1 Uscita iniziale: aprile 2015 | OAuth 2 | Richieste REST con risposte JSON | Non supportato |
Applicazione demo con Devise
Integrare queste API nelle tue applicazioni nuove o esistenti, grazie a una miriade di pacchetti e librerie di API di social network, è più facile che mai. La maggior parte delle piattaforme e dei framework moderni dispone di librerie di terze parti testate nel tempo che unificano persino l'aspetto di autenticazione di tutte queste API in un'unica libreria con un'architettura di plugin ordinata.
Per questo articolo, daremo un'occhiata a come Devise, una gemma di Ruby, lo fa in modo così elegante per le applicazioni Rails. Devise è una libreria di autenticazione flessibile basata su Warden che implementa l'autenticazione, la registrazione, l'accesso e l'archiviazione dei dati per più provider di accesso. Se sei più un tipo front-end e vuoi controllare qualcosa di simile per AngularJS, dai un'occhiata a questo articolo.
Devise, come la maggior parte delle librerie di questa classe, non è integrato con il supporto per nessuna delle API di social network sopra menzionate. Il supporto per ciascuna di queste API di social network viene fornito tramite gemme aggiuntive. Le seguenti gemme sono disponibili per l'autenticazione Rails che coprono i 5 provider discussi in questo articolo:
gem 'omniauth-facebook' gem 'omniauth-pinterest' gem 'omniauth-twitter' gem 'omniauth-google-oauth2' gem 'omniauth-instagram'
Poiché questi forniscono solo autenticazione, registrazione, accesso e archiviazione per ciascuno di questi provider, dovremo anche ottenere le seguenti gemme per i client API effettivi:
gem 'twitter' # https://github.com/sferik/twitter gem 'instagram' # https://github.com/facebookarchive/instagram-ruby-gem gem 'koala' # (Facebook API) https://github.com/arsduo/koala gem 'google-api-client' # (YouTube API), https://github.com/google/google-api-ruby-client gem 'pinterest-api' # https://github.com/realadeel/pinterest-api
Omniauth e autenticazione
Affinché un utente possa autorizzare la tua app con il tuo provider, puoi semplicemente fornire un collegamento con il seguente percorso:
omniauth_authorize_path('user', :facebook) omniauth_authorize_path('user', :instagram) ...
Per reagire alla richiamata dopo aver autenticato un utente è possibile definire un OmniauthCallbacksController con gli ambiti come funzioni come:
class AuthenticationsController < Devise::OmniauthCallbacksController def facebook if request.env["omniauth.auth"] ... end end end
Questo è il posto dove aggiungere un nuovo modello di autenticazione con il token e i dati nella tua applicazione:
authentication = where(provider: omniauth.provider, user_id: user.id) .first_or_create do |auth| auth.user = user auth.uid = omniauth.uid auth.secret = omniauth.credentials.secret auth.token = omniauth.credentials.token ... end
Effettuare chiamate API
Ecco un esempio di come utilizzare Koala per interrogare l'API di Facebook. Il resto dei provider funziona più o meno in modo simile e sono documentati nel README della gem.
Ecco come ottenere i dati utente utilizzando Koala:
authentication = user.authentication_for_provider(:facebook) token = authentication.token api = Koala::Facebook::API.new(token) results = api.get_object("me")
È quindi possibile utilizzare il risultato JSON restituito dall'API. Il codice sorgente di questa applicazione demo è disponibile su GitHub.
Incartare
Le API dei social network ti forniscono un potente strumento per interrogare l'ampio set di dati dei social network e raccogliere i big data per la tua applicazione. Puoi creare un servizio su queste API o usarle per migliorare la tua applicazione e le informazioni dettagliate sugli utenti.
Rails e le gemme disponibili semplificano l'integrazione di queste API nella tua app rails e interrogano le interfacce con un livello di astrazione tra la tua app e l'API.