2011-07-22 23 views
5

Hola, estoy teniendo dificultades para usar las funciones de JTwitter para autenticarme con mi aplicación de Twitter. Siempre tengo un "TwitterException"Android Jtwitter, problemas de autenticación

Aquí es mi método

OAuthSignpostClient oauthClient = new OAuthSignpostClient(consumerKey, 
      privateKey, "oob"); 

a) No sé lo que debería ser el valor "fuera de banda", es el "callbackURL" y en mi solicitud en twitter dice "callBack URL: none", así que he tratado de poner "none", "None" y null donde "oob" no hay resultados diferentes.

entonces el resto es repetitivo

Intent i = new Intent(Intent.ACTION_VIEW, 
    Uri.parse(oauthClient.authorizeUrl().toString())); 
    startActivity(i); 
    // get the pin 
    String v = oauthClient.askUser("Please enter the verification PIN from Twitter"); 
    oauthClient.setAuthorizationCode(v); 
    // Store the authorisation token details for future use 
    String[] accessToken = oauthClient.getAccessToken(); 
    // Next time we can use new OAuthSignpostClient(OAUTH_KEY, OAUTH_SECRET, 
    //  accessToken[0], accessToken[1]) to avoid authenticating again. 

    EditText twitterText = (EditText)findViewById(R.id.twitterText); 
    twitterText.getText(); 

    // Make a Twitter object 
    Twitter twitter = new Twitter(null, oauthClient); 
    // Print Daniel Winterstein's status 
    //System.out.println(twitter.getStatus("winterstein")); 
    // Set my status 
    twitter.setStatus(twitterText.getText()); 

en este punto, simplemente no estoy seguro de cómo hacer este trabajo. Desearía poder ser más prolijo al respecto, pero tiene algo que ver con la autenticación. Las cosas en línea que he visto no han sido útiles

Respuesta

7

probar este que la URL de devolución de llamada:

OAuthSignpostClient oauthClient = 
    new OAuthSignpostClient(consumerKey, privateKey, "callback://twitter"); 

Recuerde! Después:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); 

Haga lo siguiente anulación

onResume() para obtener el código de verificación

protected void onResume() { 
    super.onResume(); 
    if (this.getIntent()!=null && this.getIntent().getData()!=null){ 
     Uri uri = this.getIntent().getData(); 
     if (uri != null && uri.toString().startsWith("callback://twitter")) { 
      //Do whatever you want 
      //usually use uri.getQueryParameter(someString); 
      //test what could be someString using Log.v("",uri.toString()); 
      //u want the Authorization code which is a couple of numbers 
      //so you could use oauthClient.setAuthorizationCode(v); 
      //and finally initialise Twitter 
     } 
    } 
} 

Puede utilizar uri.getQueryParameterNames() para obtener el parámetro String nombres.


@BobVork

Sólo me gustaría añadir que usted necesita tener un URL de respuesta establecido en la pestaña Configuración de la aplicación de Twitter (en twitter.com).

Ni siquiera importa lo que ponga en el campo, pero si está vacío, las URL de devolución de llamada no funcionarán.

+1

Me gustaría agregar que necesitará tener una URL de devolución de llamada establecida en la pestaña Configuración de su aplicación de Twitter (en twitter.com). Ni siquiera importa lo que pongas en el campo, pero si está vacío, las URL de devolución de llamada no funcionarán. Esto me llevó aproximadamente una hora averiguarlo, así que pensé que esto podría salvar a otra persona en algún momento. –

1

No estoy seguro de que ese sea el problema, pero parece que nunca estableces el nombre de usuario para el objeto de twitter.

+0

Pensé que el objetivo del juramento era que el usuario no tuviera que ingresar su nombre de usuario o algo ... ¿y mucho menos codificarlo?El tipo de concepto confunde, mi primera intuición fue que el nombre de usuario va a algún lado, pero el objeto de Twitter parecía no necesitarlo y alguien lo juraría. – CQM

+0

No estoy tan familiarizado con las API de Twitter, pero en todas partes busqué (incluso en el ejemplo del que tomaste el código), incluso cuando se usó oAuth, también se usó el nombre de usuario. Puedes guardarlo una vez y luego usarlo cuando sea necesario, no tienes que leerlo desde algunos TextView cada vez. – MByD

1

Bueno, no sé cómo es con la API de Jtwitter y no sé lo suficiente Java en este punto para entender realmente el funcionamiento interno de este código, pero ha intentado, en lugar de NULL o None, para probar ? en su lugar. Esa es la devolución de llamada utilizada con la API relajante al hacer llamadas desde Javascript. Pruébalo.

Cuestiones relacionadas