2011-03-17 18 views
5

He estado buscando una manera de publicar un tweet con mi aplicación Android, pero todas las cosas que he encontrado no funcionan.Publicar un tweet con la API de Android

Tengo que admitir que la API de Twitter no es tan simple de entender, pero mi código no es muy largo y no veo dónde está mi error.

Este es mi código:

public class PartagerTwitter extends Activity { 

    private CommonsHttpOAuthConsumer httpOauthConsumer; 
    private OAuthProvider httpOauthprovider; 
    public final static String consumerKey = XXX; 
    public final static String consumerSecret = XXX; 
    private final String CALLBACKURL = "myapp://twitactivity"; 
    private Twitter twitter; 

    @Override 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     try { 
      httpOauthConsumer = new CommonsHttpOAuthConsumer(consumerKey, consumerSecret); 
      httpOauthprovider = new DefaultOAuthProvider("https://twitter.com/oauth/request_token", 
        "https://twitter.com/oauth/access_token", 
      "https://twitter.com/oauth/authorize"); 
      String authUrl = httpOauthprovider.retrieveRequestToken(httpOauthConsumer, CALLBACKURL); 

      this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    protected void onNewIntent(Intent intent) { 

     super.onNewIntent(intent); 
     Uri uri = intent.getData(); 
     Log.i("test", uri.toString()); 
     if (uri != null && uri.toString().startsWith(CALLBACKURL)) { 
      String verifier = uri.getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER); 
      try { 
       httpOauthprovider.retrieveAccessToken(httpOauthConsumer, verifier);  
       twitter = new TwitterFactory().getInstance(); 
       twitter.setOAuthConsumer(consumerKey, consumerSecret); 

       RequestToken requestToken = twitter.getOAuthRequestToken(CALLBACKURL); 
       AccessToken accessToken = twitter.getOAuthAccessToken(requestToken); 
       String token = accessToken.getToken(), 
       secret = accessToken.getTokenSecret(); 

       accessToken = new AccessToken(token,secret); 
       Twitter twitter = new TwitterFactory().getOAuthAuthorizedInstance(consumerKey,consumerSecret,accessToken); 
       twitter.updateStatus("My First Status Update"); 
      } catch (Exception e) { 
       e.printStackTrace(); 

      } 
     } 
    } 
} 

Por supuesto, las llaves no son XXX. Y otra pregunta, ¿es posible, después de iniciar sesión, cerrar la ventana de Twitter y poner mi actividad en primer plano?

Respuesta

5

Consulte the following blog post para obtener una guía completa de punta a punta para publicar en Twitter desde una aplicación de Android.

También incluye una muestra de Android que funciona en Github.

0

Cree su aplicación con permiso de lectura/escritura en el sitio de desarrollo de Twitter, genere token de acceso para su aplicación.

utilizar el siguiente código para actualizar el estado

public static void main(String[] args) { 

    String CONSUMER_KEY = "YOUR_CONSUMER_KEY"; 
    String CONSUMER_SECRET = "YOUR_CONSUMER_SECRET"; 
    String ACCESS_SECRET = "YOUR_ACCESS_SECRET"; 
    String ACCESS_TOKEN = "YOUR_ACCESS_TOKEN"; 

    // Consumer 
    Twitter twitter = new TwitterFactory().getInstance(); 
    twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 

    // Access Token 
    AccessToken accessToken = null; 
    accessToken = new AccessToken(ACCESS_TOKEN, ACCESS_SECRET); 
    twitter.setOAuthAccessToken(accessToken); 

    // Posting Status 
    Status status = null; 
    try { 
     status = twitter.updateStatus("YOUR_STATUS"); 
    } catch (TwitterException e) { 
     e.printStackTrace(); 
    } 
    System.out.println("Successfully updated the status: " 
      + status.getText()); 
} 
Cuestiones relacionadas