spaghetti-open-data / twitAntonio

TweetYourMep fork for the Italian 2013 Elections
http://www.twitantonio.it
GNU Affero General Public License v3.0
16 stars 10 forks source link

Twitter Authentication #10

Closed paolomainardi closed 11 years ago

paolomainardi commented 11 years ago

Implementare la Twitter Authentication. Solo gli autenticati saranno abilitati all'invio.

paolomainardi commented 11 years ago

Abbiamo una prima implementazione funzionante del login con Twitter, questo ci permette di avere i dati dell'utente che invierà il Tweet, dunque incrociarli poi con i dati dello stream Twitter per fare delle analisi.

Screen Shot 2013-01-23 at 11 51 41 Screen Shot 2013-01-23 at 11 51 35

dottorblaster commented 11 years ago

Ottimo, molto molto molto bene. Oggi che sono un po' più libero vedo di paciugarci e vedere di far uscire qualcos'altro.

paolomainardi commented 11 years ago

Dump utente di un record su Mongo (uno a caso):

{ "twit" : { 
    "id" : "9241712",
    "name" : "Paolo Mainardi",
    "screenName" : "paolomainardi",
    "location" : "Sesto Calende (Va)",
    "description" : "Twinbit founder - CTO - Twin (@stefanomainardi)\r\nhttp://www.paolomainardi.com \r\n#drupal and #opendata enthusiast",
    "profileImageUrl" : "http://a0.twimg.com/profile_images/1244988041/p-ff6a317e7d1b11ddb25f003048343a40-medium-1000_normal.jpg",
    "url" : "http://www.twinbit.it",
    "protected" : false,
    "followersCount" : 664,
    "profileBackgroundColor" : "131516",
    "profileTextColor" : "333333",
    "profileLinkColor" : "009999",
    "profileSidebarFillColor" : "EFEFEF",
    "friendsCount" : 1093,
    "createdAt" : Date( 1191495835000 ),
    "favouritesCount" : 204,
    "utcOffset" : -10800,
    "timeZone" : "Greenland",
    "profileBackgroundImageUrl" : "http://a0.twimg.com/images/themes/theme14/bg.gif",
    "profileBackgroundTile" : true,
    "profileUseBackgroundImage" : true,
    "geoEnabled" : true,
    "verified" : false,
    "statusesCount" : 1483,
    "lang" : "it",
    "contributorsEnabled" : false },
  "_id" : ObjectId( "50ff5bdc641d340000000001" ),
  "__v" : 0 }
paolomainardi commented 11 years ago

@dottorblaster il codice è ancora sul mio branch, damme un attimo che mergio tutto :)

dottorblaster commented 11 years ago

Hai tutto il tempo del mondo :) (posso anche branchare dal tuo branch al limite)

nelsonmau commented 11 years ago

@paolomainardi l'autenticazione funzionerà anche sul widget? Voglio dire: cvhi lo embedda sul suo sito, dovrà prima autenticarsi tramite noi per twittare anche da lì, vero?

paolomainardi commented 11 years ago

@nelsonmau tecnicamente si, dato che è un iframe potrebbe autenticarsi direttamente dal widget, ma questo aggiunge un ulteriore livello di complessità.

nelsonmau commented 11 years ago
ok allora aspettiamo
@Alfredo come stai messo? te fanno sgobbà? lo sai che quando penso
al widgetino mi viene in mente il tuo barbone? eh eh (quello che
mette ansia sono io ^_^)Il 23/01/2013 12:38, Paolo Mainardi ha
  scritto:

  @nelsonmau tecnicamente si, dato che
    è un iframe potrebbe autenticarsi direttamente dal widget, ma
    questo aggiunge un ulteriore livello di complessità. 

    —
    Reply to this email directly or view
      it on GitHub. 

-- 

Andrea Nelson Mauro - Datajournalist

http://www.dataninja.it http://twitter.com/nelsonmau

paolomainardi commented 11 years ago

Un immagine di repertorio, sicuramente si discuteva del widget :D

lo-famo-il-widget

dottorblaster commented 11 years ago

Paolo, dopo quella del monocolo... http://news.bbcimg.co.uk/media/images/63982000/jpg/_63982403_63982402.jpg

Ti chiameranno l'uomo-meme tra un po' :D

Ale

On Wed, Jan 23, 2013 at 12:59 PM, Paolo Mainardi notifications@github.comwrote:

Un immagine di repertorio, sicuramente si discuteva del widget :D

[image: lo-famo-il-widget]https://f.cloud.github.com/assets/8747/89801/39502c5c-6554-11e2-8310-0a3492db4d79.jpg

— Reply to this email directly or view it on GitHubhttps://github.com/spaghetti-open-data/twitAntonio/issues/10#issuecomment-12592498.

nelsonmau commented 11 years ago

Bella la foto!

P.s.: l'autebticazione sul widgettino è da capire se può essere un limite, concettualmente. Voglio dire: questa cosa va concepita aperta il piu possibile. Non vorrei che obbligare tytti ovunque a autenticarso sia controproducente.

Luca Bergamini che ne pensa? O è giá a Sanremo? :))) Il giorno 23/gen/2013 13:03, "Alessio" notifications@github.com ha scritto:

Paolo, dopo quella del monocolo... http://news.bbcimg.co.uk/media/images/63982000/jpg/_63982403_63982402.jpg

Ti chiameranno l'uomo-meme tra un po' :D

Ale

On Wed, Jan 23, 2013 at 12:59 PM, Paolo Mainardi notifications@github.comwrote:

Un immagine di repertorio, sicuramente si discuteva del widget :D

[image: lo-famo-il-widget]< https://f.cloud.github.com/assets/8747/89801/39502c5c-6554-11e2-8310-0a3492db4d79.jpg>

— Reply to this email directly or view it on GitHub< https://github.com/spaghetti-open-data/twitAntonio/issues/10#issuecomment-12592498>.

— Reply to this email directly or view it on GitHubhttps://github.com/spaghetti-open-data/twitAntonio/issues/10#issuecomment-12592618.

paolomainardi commented 11 years ago

@nelsonmau Sono d'accordo, in effetti anche sul sito, l'autenticazione aiuta solamente noi a fare analisi, inoltre ci apre comunque lo scenario di dover conservare una parte dei loro dati (quelli di twitter).

Ripensandoci, alla fine credo non sia strettamente necessaria, nel senso, noi vogliamo capire quanti utenti dal sito stanno usando l'app oppure vogliamo monitorare quanti usano il tag #twitantonio per fare conversazioni, senza preoccuparci se venga dall'app oppure no ?

lucacorsato commented 11 years ago

sono un profano, quindi rischio di dire delle idiozie. Ma il sistema di autenticazione con profilo tw è per attribuire in maniera certa l'autore. Vorrei evitare che si possa pensare che twitantonio sia un sistema di spam... Oltre a questo c'é anche una ragione di "ingaggio": se vuoi inviare un tweet devi essere anche tu su Twitter... che ne dite?

Il giorno 23/gen/2013, alle ore 13:23, Paolo Mainardi notifications@github.com ha scritto:

@nelsonmau Sono d'accordo, in effetti anche sul sito, l'autenticazione aiuta solamente noi a fare analisi, inoltre ci apre comunque lo scenario di dover conservare una parte dei loro dati (quelli di twitter).

Ripensandoci, alla fine credo non sia strettamente necessaria, nel senso, noi vogliamo capire quanti utenti dal sito stanno usando l'app oppure vogliamo monitorare quanti usano il tag #twitantonio per fare conversazioni, senza preoccuparci se venga dall'app oppure no ?

— Reply to this email directly or view it on GitHub.

paolomainardi commented 11 years ago

@lucacorsato ottime osservazioni. Però alla fine anche ora su TyMEP, se non sei su Twitter non puoi inviare, dovresti comunque registrarti. Cosa offriamo in più con la registrazione ? Questo è il messaggio da "esplodere" meglio.

albertocottica commented 11 years ago

Se non ho capito male l'autenticazione è un non-problema. Anche in TYMEP non è TYMEP che manda i tweet, è l'utente stesso dal proprio account. Quindi deve essere autenticato, e deve abilitare TYMEP ad accedere all'account (te lo ritrovi in https://twitter.com/settings/applications).

Materialmente. la prima volta che usi TYMEP (e in futuro TA) ti compare una richiesta di autorizzazione dell'app a interfacciarsi con il tuo account Twitter. In seguito, ogni volta che mandi un tweet da TYMEP, TYMEP si impadronisce dell'account in modo trasparente per l'utente e lo usa per pubblicare quel tweet sulla sua timeline. Immagino che di questa transazione sia possibile tenere traccia.

Piuttosto @paolomainardi , sei sicuro di volere scaricare in locale tutti i dati dell'account (favorites, location etc.)? Non vorrei unirmi alla schiera dei data miners, che è già anche troppo folta, senza una buona ragione....

perugini commented 11 years ago

On 24/01/13 12:27, Alberto Cottica wrote:

Se non ho capito male l'autenticazione è un non-problema. Anche in TYMEP non è TYMEP che manda i tweet, è l'utente stesso dal proprio account. Quindi deve essere autenticato, e deve abilitare TYMEP ad accedere all'account (te lo ritrovi in https://twitter.com/settings/applications).

Materialmente. la prima volta che usi TYMEP (e in futuro TA) ti compare una richiesta di autorizzazione dell'app a interfacciarsi con il tuo account Twitter. In seguito, ogni volta che mandi un tweet da TYMEP, TYMEP si impadronisce dell'account in modo trasparente per l'utente e lo usa per pubblicare quel tweet sulla sua timeline. Immagino che di questa transazione sia possibile tenere traccia.

Corretto.

Piuttosto @paolomainardi https://github.com/paolomainardi , sei sicuro di volere scaricare in locale tutti i dati dell'account (favorites, location etc.)? Non vorrei unirmi alla schiera dei data miners, che è già anche troppo folta, senza una buona ragione....

Più che altro, un ulteriore onere lato code... che magari si può rimandare ad una release successiva :-)

L

— Reply to this email directly or view it on GitHub https://github.com/spaghetti-open-data/twitAntonio/issues/10#issuecomment-12647203.

albertocottica commented 11 years ago

Mi spiego meglio: ogni tweet ha un ID unico. Immagino sia possibile, nel momento in cui TA scrive sul DB di Twitter, riportare indietro quell'ID (magari ci vorrà un piccolo hack, tipo una query apposta).

A questo punto puoi costruire una timeline che prescinde sia dall'hashtag usato che dall'utente/destinatario del tweet, ma è semplicemente una query alle API di Twitter che tira giù i tweets il cui ID corrisponde a quelli transitati per TA. Secondo me è più completo dell'hashtag (io l'hashtag #TweetyourMEP lo cancello se ho bisogno di caratteri) e meno invasivo della registrazione ulteriore su TA.

paolomainardi commented 11 years ago

@albertocottica Appunto, il punto è esattamente quello, io non voglio tenere nessun dato, meno ne abbiamo meglio è per noi e per l'utente. A questo punto direi che possiamo tenere traccia solo di: "id, screenName" che sono quelli che ci servono per incrociare i dati dello Stream.

In realtà pensavo pensavo di non modificare la form di invio di Twitter, quindi usare lo stesso workflow di tymep, questo perchè l'esperienza d'uso della form di Twitter (#hash. @users, link-troncati, validazione caratteri) non è pensabile replicarla in-app.

La mia idea è questa:

1) Un app separata gira e salva in un db tutto quello che succede con gli hash "twitantonio e #ancoradadecidere" 2) Twitantonio usa questo DB per popolare le statistiche su ogni item del candidato (tipo quanti twit gli sono stati inviati, quante volte ha risposto, quanti retweet etc.)

Ed è per questo che perde senso avere l'autenticazione, con lo stream abbiamo già tutte le info che ci servono, chi ha inviato a chi e tutte le loro informazioni.

paolomainardi commented 11 years ago

@perugini il codice che fa l'auth già c'è tutto, per adesso vive solitario in un mio branch :)

lucacorsato commented 11 years ago

quoto assolutamente la mainardi-solution! bene anche non "tenere" nessun dato

nelsonmau commented 11 years ago
beh però con i dati si potrebbe misurare quanto sono responsivi i
politicanti, don't forget :)
dopodicchè forse sta storia richiede più tempo per riflettere meglio
quindi voto per il rinvio.Il 24/01/2013 12:50, luca corsato ha
  scritto:
quoto assolutamente la mainardi-solution!
  bene anche non "tenere" nessun dato

    —
    Reply to this email directly or view
      it on GitHub. 

-- 

Andrea Nelson Mauro - Datajournalist

http://www.dataninja.it http://twitter.com/nelsonmau

paolomainardi commented 11 years ago

@nelsonmau infatti i dati dei politici li avremmo comunque, questo anche senza avere l'autenticazione utente. Tanto a noi alla fine non interessa specificatamente quanti tweet sono inviati dall'app ma quanti tweet con i nostri tag stanno girando, ed è su quelli che va fatta la metrica e l'associazione. Possiamo già farlo, senza auth.

nelsonmau commented 11 years ago

Allora il caso è chiuso, callagan! ;)

@nelsonmau https://github.com/nelsonmau infatti i dati dei politici li avremmo comunque, questo anche senza avere l'autenticazione utente. Tanto a noi alla fine non interessa specificatamente quanti tweet sono inviati dall'app ma quanti tweet con i nostri tag stanno girando, ed è su quelli che va fatta la metrica e l'associazione. Possiamo già farlo, senza auth.

— Reply to this email directly or view it on GitHubhttps://github.com/spaghetti-open-data/twitAntonio/issues/10#issuecomment-12648046.

albertocottica commented 11 years ago

@paolomainardi , ottimo. Solo non capisco a cosa ti serve a questo punto l'hashtag, mi sembra superato dall'ID.

Piuttosto, se volete tenere traccia di quali candidati rispondono di più, serve un pezzo di TA che fa, nel suo piccolo, analytics. Esempio di pseudo-query alle API di Twitter:

for tweet in {timeline di TA}:
      candidato = tweet[destinatario]
      contatore = 1
      for candidatotweet [autore = candidato]:
            if candidatotweet [is reply to (lista con tutti gli ID della timeline di TA):
                   contatore = contatore + 1

Questo è un modo molto inefficiente di raccogliere dati, ovviamente, ma il punto è che una volta che hai la lista degli ID puoi risalire a TUTTO.

albertocottica commented 11 years ago

Maledizione, mi ha cancellato tutti gli indent. Meno male che siamo su GitHub LOL

paolomainardi commented 11 years ago

@albertocottica mi sono permesso di aggiornare il tuo commento, usando il markdown per la formattazione del codice.

paolomainardi commented 11 years ago

@albertocottica che intendi per "timeline" di TA ? Perchè usando il widget di invio di Tweet che abbiamo ora (Ora usiamo le web intents), non possiamo automaticamente risalire all'id di quel tweet specifico, bisogna probabilmente implementare qualcosa da qui: https://dev.twitter.com/docs/intents/events

albertocottica commented 11 years ago

Timeline di TA = il flusso di tweets che Twitantonio (TA) passa a Twitter via API.

Le web intents non so cosa siano ma temevo qualcosa del genere: se l'ID viene generato a valle della transazione tra TA e Twitter l'app dovrebbe recuperarlo con una query che faccia uso di un elemento che invece l'app conosce. Forse diventa troppo complicato.

seralf commented 11 years ago

intervengo al volo, poi rispondo con più calma

+1 sulla app di monitoraggio a parte, proposta da Paolo: questo garantisce di tenere "snello" il nostro Antonio :-), e di poter aggiungere funzioncine su tale app che facciano un po' di analisi, comprese quelle cui faceva riferimento Alberto. Se riesco a farmi ospitare la app su un server java vi aggiorno: in caso fosse possibile si potrebbe beneficiare anche di diverse librerie fatte appositamente per fare analisi di network ed altre cosette, sulle quali anche a me piacerebbe giocare un po' :-). In ogni caso si fa sempre in tempo a recuperare su questo fronte (credo sarebbe carino riprendere anche il filone Dario dell'hackaton), basta loggare a parte un po' di roba. Peraltro se loggiamo lo storico dei tweet è tutta roba già pubblica, quindi non stiamo profilando nessuno :-)

Invece mi fate tornare in mente una cosa più terra-terra: perché non mettere su fin dallo start degli anlytics per twitantonio? avevo proposto piwik per tymep, in parallelo a google, e poi non se ne è fatto niente: se vi va lo riproporrei (a quanto ho visto male che va posso anche creare l'utente da un server mio inizialmente se ci sono problemi, ma è comunque php+mysql, niente di esagerato). I vantaggi sono oltre a quelli d avere le statistiche in casa, il fatto di poter aggiungere vari plugins, tra cui uno su tutti che heatmap dei click, potremmo ad esempio farci una idea dei "più cliccati", o cose simili. Se ce la studiamo magari ne vengono fuori (poi) cose divertenti, ma andrebbe messo su da subito, così da registrare anche l'inevitabile picco iniziale di utenti per il lancio :-) che ne dite?

Il giorno 24 gennaio 2013 14:18, Alberto Cottica notifications@github.comha scritto:

Timeline di TA = il flusso di tweets che Twitantonio (TA) passa a Twitter via API.

Le web intents non so cosa siano ma temevo qualcosa del genere: se l'ID viene generato a valle della transazione tra TA e Twitter l'app dovrebbe recuperarlo con una query che faccia uso di un elemento che invece l'app conosce. Forse diventa troppo complicato.

— Reply to this email directly or view it on GitHubhttps://github.com/spaghetti-open-data/twitAntonio/issues/10#issuecomment-12650534.

albertocottica commented 11 years ago

Monitorare è sempre una bella cosa.

L'heatmap dei click, però, mi risulta che possa rallentare molto la performance...

paolomainardi commented 11 years ago

Ok, allora io studio la parte di integrazione con le web intents. Evitiamo in questa fase la login utenti, teniamo comunque il codice nel caso dovesse servire. Poi serve comunque scrivere l'app per fetchare i dati di twitter e buttarli su MongoDB. Con NodeJS la cosa è abbastanza semplice, continuiamo comunque la discusione di questa app separata su questo thread #13

paolomainardi commented 11 years ago

@seralf per far girare Java sul server non ci sono problemi, la mia idea però è quella di continuare ad avere tutto su NodeJS per adesso, compresa l'app che fetcha i dati da Twitter. Una volta che abbiamo i dati, ci facciamo sopra un API e via di analisi in qualsiasi linguaggio vogliamo.

nelsonmau commented 11 years ago
geo-analytics? impossibili senza profilare?Il 24/01/2013 15:05, Paolo Mainardi ha
  scritto:

  Ok, allora io studio la parte di integrazione con le web
    intents. Evitiamo in questa fase la login utenti, teniamo
    comunque il codice nel caso dovesse servire.
    Poi serve comunque scrivere l'app per fetchare i dati di twitter
    e buttarli su MongoDB. Con NodeJS la cosa è abbastanza semplice,
    continuiamo comunque la discusione di questa app separata su
    questo thread #13 

    —
    Reply to this email directly or view
      it on GitHub. 

-- 

Andrea Nelson Mauro - Datajournalist

http://www.dataninja.it http://twitter.com/nelsonmau

paolomainardi commented 11 years ago

continuiamo la discussione qui: #20