2012-03-26 5 views
1
public class TwitterActivity extends Activity 
    { 
     private Twitter twitter; 
     private OAuthProvider provider; 
     private CommonsHttpOAuthConsumer consumer; 

     String CONSUMER_KEY = "abcdefgh"; 
     String CONSUMER_SECRET = "abcdefgh"; 
     String CALLBACK = "twitterapp://connect"; 


     @Override 
     public void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      askOAuth(); 
     } 

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

     @Override 
     protected void onNewIntent(Intent intent) { 

      super.onNewIntent(intent); 

      Uri uri = intent.getData(); 
      if (uri != null && uri.toString().startsWith(CALLBACK)) { 

       String verifier = uri.getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER); 

       try { 
        // this will populate token and token_secret in consumer 
        provider.retrieveAccessToken(consumer, verifier); 

        // TODO: you might want to store token and token_secret in you app settings!!!!!!!! 
        AccessToken a = new AccessToken(consumer.getToken(), consumer.getTokenSecret()); 

        // initialize Twitter4J 
        twitter = new TwitterFactory().getInstance(); 
        twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 
        twitter.setOAuthAccessToken(a); 

        // create a tweet 
        Date d = new Date(System.currentTimeMillis()); 
        String tweet = "#OAuth working! " + d.toLocaleString(); 

        // send the tweet 
        twitter.updateStatus(tweet); 

       } catch (Exception e) { 
        Log.e(APP, e.getMessage()); 
        Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); 
       } 

      } 
     } 
    } 


P.S.: I have used these api's 
    [1]: https://github.com/punitmg/Twitter-Test-App 
    [2]: https://github.com/grantland/twitter-android-sdk 
    [3]: https://github.com/yusuke/twitter4j/ 

Mit all diesen APIs kann ich erfolgreich twittern. Aber leider erscheinen die unten genannten 2 Bildschirme in allen obigen 3 Fällen.Twitter Rückruf und Login mit Jtwitter

Alles, was ich will, ist zu beenden() oder schließen Sie die beiden unteren Bildschirm, wenn mein Tweet abgeschlossen ist.

So .... plz guide me if i was wrong ... 

screenshot1

screenshot2

+0

Ich will nicht die obigen 2 Bildschirme, die sie im Stapel bleiben, wenn ich tweete –

Antwort

0

Sie müssen Login zweites Mal zwingen, dieses Problem zu beheben,

So fügen Sie einfach den force_login = true in Ihrer URL twitter autorisieren.

ich meine nur die unten stehende Codezeile ändert in TwitterApp.java Klasse

mHttpOauthprovider = new DefaultOAuthProvider("http://twitter.com/oauth/request_token", 
       "http://twitter.com/oauth/access_token", 
     "http://twitter.com/oauth/authorize?force_login=true"); 

nach Zugabe (wenn Sie eine Klassendatei mit anderen Namen dann in Ihrem Projekt mit DefaultOAuthProvider suchen haben) force_login = true Das Problem beim Laden der Webansicht wird gelöst, aber jedes Mal, wenn Sie Login und Passwort eingeben müssen.

Verwandte Themen