support soporte español destacados correo configuracion cliente atencion android twitter twitter4j

android - soporte - twitter support



Cómo recuperar el nombre de un usuario de Twitter usando Twitter 4j (3)

Soy nuevo en el desarrollo de Android (y Java en general). Estoy creando una aplicación que requiere que un usuario se registre al iniciar sesión en su cuenta de twitter desde donde se importa y guarda su información básica. La información requerida sería cumpleaños, nombre (nombres completos), nombre de usuario, ubicación, sexo, etc. Estoy usando twitter4j para lograr esto. He intentado buscar en la documentación de twitter4j pero al ser un novato de Android (y java en general), la documentación es un poco difícil de entender, así que parece que no puedo hacer que haga algo más que establecer una actualización de estado.

Este es el código en mi actividad:

package cc.co.localsquare.app; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.widget.Toast; import oauth.signpost.OAuthProvider; import oauth.signpost.basic.DefaultOAuthProvider; import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer; import oauth.signpost.exception.OAuthCommunicationException; import oauth.signpost.exception.OAuthExpectationFailedException; import oauth.signpost.exception.OAuthMessageSignerException; import oauth.signpost.exception.OAuthNotAuthorizedException; import twitter4j.Twitter; import twitter4j.TwitterFactory; import twitter4j.http.AccessToken; public class ConnectTwitterActivity extends BaseActivity { public final static String CONSUMER_KEY = "valid key"; public final static String CONSUMER_SECRET = "valid secret"; public final static String CALLBACK_URL = "localsquare://ConnectTwitterActivity2"; private CommonsHttpOAuthConsumer commonHttpOAuthConsumer; private OAuthProvider authProvider; private Twitter twitter; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.connect_twitter); commonHttpOAuthConsumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); authProvider = new DefaultOAuthProvider("http://twitter.com/oauth/request_token", "http://twitter.com/oauth/access_token", "http://twitter.com/oauth/authorize"); try { String oAuthURL = authProvider.retrieveRequestToken(commonHttpOAuthConsumer, CALLBACK_URL); this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(oAuthURL))); } catch (OAuthMessageSignerException e) { Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); e.printStackTrace(); } catch (OAuthNotAuthorizedException e) { Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); e.printStackTrace(); } catch (OAuthExpectationFailedException e) { Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); e.printStackTrace(); } catch (OAuthCommunicationException e) { Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); e.printStackTrace(); } } protected void onNewIntent(Intent intent) { super.onNewIntent(intent); Uri uri = intent.getData(); if (uri != null && uri.toString().startsWith(CALLBACK_URL)) { String verifier = uri.getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER); try { authProvider.retrieveAccessToken(commonHttpOAuthConsumer, verifier); AccessToken accessToken = new AccessToken(commonHttpOAuthConsumer.getToken(), commonHttpOAuthConsumer.getTokenSecret()); twitter = new TwitterFactory().getInstance(); twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); twitter.setOAuthAccessToken(accessToken); // Alternate way: // twitter = new TwitterFactory().getOAuthAuthorizedInstance(CONSUMER_KEY, CONSUMER_SECRET, // new AccessToken(commonHttpOAuthConsumer.getToken(), commonHttpOAuthConsumer.getTokenSecret())); // Tweet message to be updated. String tweet = "Hi there, This was sent from my application - OAuth, Twitter"; twitter.updateStatus(tweet); } catch (Exception e) { Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_LONG); } } }

}

¿Cómo puedo resolver EXACTAMENTE mi problema?


Obtenga el objeto de Twitter de la sesión una vez que el inicio de sesión esté completo. Se puede utilizar de la siguiente manera para extraer el nombre.

Twitter twitter = (Twitter) request.getSession().getAttribute("twitter"); long userID = twitter.getId(); twitter4j.User newUser=twitter.showUser(twitter.getScreenName()); String name=newUser.getName();

Puede explorar varios métodos de la clase de usuario para obtener diferentes atributos de usuario como imagen de perfil, friendlistlength, etc. @Vineet Bhatia


Si tiene el nombre de usuario del usuario de Twitter para quien necesita obtener los detalles, puede usar User user = twitter.showUser(screenName); .Ahora puede acceder a la información sobre el usuario utilizando las funciones de user.getName() en el user objeto, por ejemplo, user.getName() , user.getLocation() etc.

Recuerda importar la clase de User en Eclipse. Generalmente también puedes hacerlo presionando Ctrl + Shift + O en Eclipse.


Utilice el método twitter.showUser() para obtener detalles del usuario. Para obtener el nombre de usuario, haga que user.getName() Recuerde que javadoc es su amigo.