2010-07-23 14 views
13

Estoy probando la siguiente aplicación de ejemplo para twitter oauth.android twitter retrieveRequestToken 401 al token de solicitud

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(); 
     } 
    } 

Cuando corro el siguiente código Da a excepción de la siguiente manera

"oauth.signpost.exception.OAuthNotAuthorizedException: Error de autorización (servidor respondió con un 401) Esto puede suceder si. la clave del consumidor no era correcta o las firmas no coincidían ".

en esta línea String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL);

que proporcionan la 'llave' correcto y 'secreto' no gorjeo me da clave equivocada y secreto?

+0

por favor dime qué poner en CALLBACK_URL ??? – Shruti

+0

la URL de su actividad androide que se llamará después de twitter devuelve la respuesta –

+0

la URL de su actividad androide que se llamará una vez que Twitter devuelve la respuesta –

Respuesta

1

finalmente hecho, echa un vistazo a la siguiente post

android twitter outh tutorial callback problem

+0

bien He preguntado varias veces "¿está configurada tu aplicación Twitter como navegador?" –

+0

sí configurado como navegador. –

+0

Me he dado cuenta de que respondes tus propias preguntas incluso con la ayuda de otros usuarios para obtener puntos. – Jorgesys

8

Acabo de tener el mismo problema. Solo apareció en mi teléfono dev, pero en el emulador y en otro teléfono el código funcionaba bien. Después de probar varias soluciones a preguntas relacionadas sin suerte, al final resultó que no había establecido la hora y la fecha en el teléfono dev, que no tiene una tarjeta SIM. Esto causó que los certificados SSL no fueran válidos y la solicitud OAuth fallara, así como cualquier otra cosa que usara HTTPS. Después de establecer el tiempo, los problemas desaparecieron.

+0

No parecía haber muchas otras causas posibles para el mismo problema, también, pero este que no pude encontrar sugerido antes, probabl y porque no es exactamente un problema con Twitter o OAuth. – DonSteep

+4

+1, está a punto de configurar la fecha y la hora en un teléfono sin tarjeta SIM. –

4

** 1) ** fecha y hora a los valores correctos Set, Esto ayudará a solucionar este 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) ¿Tu aplicación de Twitter está configurada como navegador? tratar con este teclas:

Consumidor clave

sdOjEI2cOxzTLHMCCMmuQ

Consumidor secreto

biI3oxIBX2QMzUIVaW1wVAXygbynuS80pqSliSDTc

+0

estoy tratando el código anterior en el emulador y probado en el dispositivo, así que no funcionó en ambas condiciones. Lo intentaré de nuevo estableciendo la fecha y hora del emulador y luego probaré ,. –

+0

@Faisal he editado su código en mi respuesta. – Jorgesys

+0

intenté esto pero todavía no funcionaba obteniendo el mismo error. –

1

sí, totramon tiene razón ... Si tiene problemas solo con problemas de autenticación, es posible que deba configurar el dispositivo. Estaba enfrentando el mismo problema y lo resolví solo con esta solución. Además, si está utilizando la antigua API de api, debe cambiarla a la versión estable api (2.1.4). Usted puede encontrar en el siguiente enlace:

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

Enjoy ..

14

He pasado varias horas en esto. Parece que tienes que establecer CUALQUIER valor en la url de devolución de llamada en la pestaña Configuración en tu panel de desarrollador de aplicaciones de Twitter. Mantener el valor vacío predeterminado deshabilita las URL de devolución de llamada dinámicas.

Todos los tutoriales y toda la información que he encontrado en línea son nulos.Twitter eliminó por mucho tiempo el botón de opción "Cliente/Sitio web".

Además, cheques OAuth para reloj sesga.

+2

1 Ajuste algo en la URL de devolución de llamada (por ejemplo https://dev.twitter.com) trabajó para mí. –

+0

@gilm: Demasiado tarde para decirlo, ¡pero tengo que agradecerle mucho! –

+0

@gilm gracias, resolvió mi problema. – Siddhesh

2

usando https en lugar de http en el proveedor

+0

Esto funcionó para mí. ¡Gracias! –

Cuestiones relacionadas