2009-08-11 4 views
5

Sto implementando un po 'di ruby ​​su un codice rails per i miei utenti. Sto creando il link OAuth corretta ... qualcosa comePerché gli utenti devono inserire un PIN di Twitter di 7 cifre per consentire l'accesso alla mia applicazione?

http://twitter.com/oauth/authorize?oauth_token=y2RkuftYAEkbEuIF7zKMuzWN30O2XxM8U9j0egtzKv 

Ma dopo il mio accesso di account di prova per borse di Twitter, si tira su una pagina che dice "Hai concesso con successo l'accesso a. Basta tornare e immettere il seguente PIN per completare il processo 1234567 "

Non ho idea di dove l'utente debba inserire questo PIN e perché debbano farlo. Non penso che questo dovrebbe essere un passo necessario. Twitter dovrebbe reindirizzare l'utente all'URL di richiamata che ho fornito nelle impostazioni dell'applicazione. Qualcuno sa perché questo sta accadendo?

UPDATE ho trovato this article che gli Stati devo inviare i miei utenti a questo URL (nota "autenticare" al posto di "autorizzazione"):

http://twitter.com/oauth/authenticate?oauth_token=y2RkuftYAEkbEuIF7zKMuzWN30O2XxM8U9j0egtzKv 

ho fatto il cambiamento, ma Twitter reindirizza l'utente al percorso di autorizzazione dopo aver fatto clic su "Consenti", che restituisce il PIN di 7 cifre!

+0

grazie hai salvato la mia giornata! –

risposta

6

OAuth 1.0a aggiunto il PIN per risolvere uno social engineering attack to which OAuth 1.0 was vulnerable. Tuttavia, il PIN deve essere inserito manualmente dall'utente solo se l'applicazione è un'app per desktop/iphone. Se si tratta di un'app Web, il PIN deve scorrere automaticamente come parte dei reindirizzamenti del browser e l'utente non deve visualizzarlo o inserirlo.

Quindi, se la tua app è un'app Web, c'è un bug nella libreria OAuth o nel tuo utilizzo. Se la tua app è un'app desktop, questa è una "funzione" progettata per proteggere gli utenti.

+1

La mia app è un'app Web. Secondo i documenti di Twitter, portare l'utente su/oauth/authenticate dirà a Twitter che la mia app è un'app Web e che include automaticamente il PIN. Tuttavia, dopo aver fatto clic su Consenti, Twitter sta reindirizzando a/oauth/authorize quale è il percorso per le app desktop. Non vedo come posso cambiare nulla dalla mia parte per risolvere questo problema. – Tony

+1

Bene, considerando che nessun'altra app web Twitter ha questo problema, deve essere dal lato client. Ora, potrebbe anche essere che tu abbia la tua configurazione twitter.com/oauth_client per la tua app web come app per desktop. Raccomando di ricontrollare che Twitter sappia che il tuo consumer_key è associato a un'app Web e non a un'app desktop. In caso contrario, torno a "è un bug nella tua libreria o nel modo in cui lo stai usando". –

+0

Avevi ragione su un bug oauth. Ottenere oauth 0.3.4 ha corretto la mia domanda. Il problema è con oauth 0.3.5 – Tony

5

Se non si specifica un parametro oauth_callback con l'URL a cui si desidera reindirizzare l'utente quando accetta, verrà impostato automaticamente il meccanismo di autenticazione basato su pin. L'utilizzo di oauth_callback=oob attiverà anche il flusso di autenticazione basato su pin.

+0

che non ha funzionato per me. per twitter, hanno un parametro di callback che puoi impostare nelle impostazioni dell'applicazione ... quindi non sono sicuro che l'invio di un parametro URL farà la differenza, ma grazie alla risposta – Tony

+0

@Tony ho lo stesso problema. Qualcuno conosce la causa di questo errore. – maxiperez

0

ho notato che quando uso il cinguettio

config.gem "twitter", :version => "0.6.12"

reindirizza fine e non mostrano il perno

ma quando uso la versione più recente gioiello

config.gem "twitter", :version => "0.9.2" 

esso mostra sempre il pin.

Questo ha sicuramente bisogno di ulteriori indagini, e può essere risolto con ulteriore configurazione che non ho fatto con il GEM più recente.

1

Basta accedere all'account Twitter e modificare l'applicazione in passare dal desktop al browser Tutti fanno questo errore incluso me stesso.

Problemi correlati