2010-07-23 13 views
13

Sto provando la seguente app di esempio per twitter oauth.android twitter retrieveRequestToken 401 su richiesta token

http://www.androidsdkforum.com/android-sdk-development/3-oauth-twitter.html

private void askOAuth() { 
     try { 
      consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 
      provider = new DefaultOAuthProvider("http://twitter.com/oauth/request_token", 
               "http://twitter.com/oauth/access_token", 
               "http://twitter.com/oauth/authorize"); 
      String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL); 
      Toast.makeText(this, "Please authorize this app!", Toast.LENGTH_LONG).show(); 
      this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); 
     } catch (Exception e) { 
      Log.e(APP, e.getMessage()); 
      Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); 
     } 
    } 

Quando ho eseguito il seguente codice dà eccezione come segue

"oauth.signpost.exception.OAuthNotAuthorizedException: Autorizzazione non riuscita (server ha risposto con un 401) Questo può accadere se. la chiave del consumatore non era corretta o le firme non corrispondevano ".

su questa linea String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL);

ho fornito la 'chiave' corretta e 'segreto' does Twitter mi fornisce tasto sbagliato e segreto?

+0

plz dimmi cosa mettere in CALLBACK_URL ??? – Shruti

+0

l'URL dell'attività Android che verrà chiamato dopo che Twitter ha restituito la risposta –

+0

l'URL dell'attività Android che verrà richiamato una volta che twitter ha restituito la risposta –

risposta

1

finalmente fatto, controlla il seguente post

android twitter outh tutorial callback problem

+0

ok ho chiesto più volte "la tua app di twitter è configurata come Browser ???" –

+0

si configurato come browser. –

+0

Mi sono reso conto che rispondi alle tue stesse domande anche con l'aiuto di altri utenti per ottenere punti. – Jorgesys

8

Ho appena avuto lo stesso problema. È apparso solo sul mio telefono dev, ma sull'emulatore e su un altro telefono il codice funzionava bene. Dopo aver provato diverse soluzioni a domande correlate senza fortuna, alla fine si è scoperto che non avevo impostato l'ora e la data sul telefono dev, che non ha una scheda sim in esso. Ciò ha causato l'invalidità dei certificati SSL e la mancata richiesta di OAuth, così come qualsiasi altra cosa che utilizzava HTTPS. Dopo aver impostato il tempo i problemi sono andati via.

+0

Sembravano esserci molte altre possibili cause per lo stesso problema, ma questo non ho potuto trovare suggerito prima, probabilmente perché non è esattamente un problema con Twitter o OAuth stessi. – DonSteep

+4

+1, hai ragione a impostare la data e l'ora in un telefono che non ha sim card. –

4

** 1) ** data e l'ora per i giusti valori Set, ciò contribuirà a risolvere questo problema. ****

2)

private OAuthConsumer consumer; 
private OAuthProvider provider; 
... 
... 
... 
provider = new CommonsHttpOAuthProvider (
       TWITTER_REQUEST_TOKEN_URL, 
       TWITTER_ACCESS_TOKEN_URL, 
       TWITTER_AUTHORIZE_URL); 

private void askOAuth() { 
     try { 
      consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 
      provider = new CommonsHttpOAuthProvider("http://twitter.com/oauth/request_token", 
               "http://twitter.com/oauth/access_token", 
               "http://twitter.com/oauth/authorize"); 

      provider.setOAuth10a(true); 

      String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL); 
      Toast.makeText(this, "Please authorize this app!", Toast.LENGTH_LONG).show(); 
      this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); 
     } catch (Exception e) { 
      Log.e(APP, e.getMessage()); 
      Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); 
     } 
    } 

3) l'app Twitter è configurata come Browser? prova con questo tasti:

Consumer chiave

sdOjEI2cOxzTLHMCCMmuQ

consumatori segreto

biI3oxIBX2QMzUIVaW1wVAXygbynuS80pqSliSDTc

+0

sto provando sopra il codice nell'emulatore e testato sul dispositivo e non ha funzionato in entrambe le condizioni. Proverò di nuovo impostando la data e l'ora dell'emulatore e provo quindi ,. –

+0

@Faisal ho modificato il tuo codice nella mia risposta. – Jorgesys

+0

ho provato questo ma ancora non funziona ottenendo lo stesso errore. –

1

sì totramon ha ragione ... Se si riscontrano problemi solo durante il problema di autenticazione, potrebbe essere necessario impostare l'ora del dispositivo. Stavo affrontando lo stesso problema e ho risolto solo con questa soluzione. Inoltre, se si utilizza la vecchia API di Twitter, è necessario cambiarla in versione stabile api (2.1.4). È possibile trovare dal seguente link:

http://twitter4j.org/en/index.html

Godetevi ..

14

Ho trascorso molte ore su questo. Sembra che sia necessario impostare QUALSIASI valore per l'url di richiamata nella scheda Impostazioni nel pannello degli sviluppatori dell'applicazione di Twitter. Mantenendo il valore vuoto predefinito disabilita gli url di callback dinamici.

Tutte le esercitazioni e tutte le informazioni che ho trovato online sono nulle.Twitter ha rimosso da tempo il pulsante di opzione "Cliente/Sito Web".

Inoltre, OAuth verifica l'inclinazione dell'orologio.

+2

+1 L'impostazione di qualcosa nell'URL di richiamata (ad esempio https://dev.twitter.com) ha funzionato per me. –

+0

@gilm: troppo tardi per dirlo, ma devo ringraziarti così tanto! –

+0

@gilm grazie risolto il mio problema. – Siddhesh

2

utilizzando https al posto di http nel provider

+0

Questo ha funzionato per me. Grazie! –

Problemi correlati