Android Twitter cannot get accestoken

I get the error message "Rekurest token or token that is not set in the server response. The service provider you are using is probably defective." Upon call

provider.RetrieveAccesstoken (comsumer, verifier);

But it is strange that I sometimes get this error. At first my code worked and I sent a message. Then the next day I tried to reinstall the application on my

home computer, i got this error. on my workstation I got the same error again, but after clicking the button that initiates the procedure, it worked again and

Posted on Twitter. What the hell is going on ?! can anyone explain?

I run 2 emulators on Android 2.2, it works more often on WQVGA400, then on WVGA800 emulator: S

I also get the notification "The default buffer size used in the BufferedReader constructor. It is better to be explicit if an 8k-char buffer is required."

Should it do something with my memory or keep secrets of tokens? the service seems to be too busy to respond when accessing it.

CODE

For reading, I removed exceptions and imports

Public class TestAgainActivity extends the action {

private String CONSUMER_KEY = "xxxxx"; private String CONSUMER_SECRET = "xxxxxxxxxxxx"; private String CALLBACK_URL = "myapp://twit"; private OAuthConsumer consumer; private OAuthProvider provider; private String authUrl; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button loginButton = new Button(this); loginButton = (Button)findViewById(R.id.button1); loginButton.setOnClickListener(login); consumer = new CommonsHttpOAuthConsumer( CONSUMER_KEY, CONSUMER_SECRET); provider = new DefaultOAuthProvider( "https://api.twitter.com/oauth/request_token", "https://api.twitter.com/oauth/access_token", "https://api.twitter.com/oauth/authorize"); } private OnClickListener login = new OnClickListener() { public void onClick(View v) { AskOauth(); } }; public void AskOauth(){ try { authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL); Here i store the Consumer token and tokenSecret SharedPreferences savedTokens = getSharedPreferences("savedTokens", 0); SharedPreferences.Editor editor = savedTokens.edit(); editor.putString("savedToken", consumer.getToken()); editor.putString("savedTokenSecret", consumer.getTokenSecret()); editor.commit(); startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); } catches{ } } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); SharedPreferences savedTokens = getSharedPreferences("savedTokens", 0); String saved_token = savedTokens.getString("savedToken", "empty ShP"); String saved_tokenSecret = savedTokens.getString("savedTokenSecret", "empty ShP"); consumer.setTokenWithSecret(saved_token, saved_tokenSecret); System.out.println("consumer token "+consumer.getToken()); System.out.println("consumer tokenSecret "+consumer.getTokenSecret()); Uri uri = this.getIntent().getData(); if (uri != null && uri.toString().startsWith(CALLBACK_URL)) { SharedPreferences savedTokens = getSharedPreferences("savedTokens", 0); String saved_token = savedTokens.getString("savedToken", "empty ShP"); String saved_tokenSecret = savedTokens.getString("savedTokenSecret", "empty ShP"); consumer.setTokenWithSecret(saved_token, saved_tokenSecret); String verifier = uri.getQueryParameter(OAuth.OAUTH_VERIFIER); try { Here i sometime get the error! provider.retrieveAccessToken(consumer, verifier); AccessToken accesToken = new AccessToken(consumer2.getToken(), consumer2.getTokenSecret()); Twitter twitter = new TwitterFactory().getInstance(); twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); twitter.setOAuthAccessToken(accesToken); Date d = new Date(System.currentTimeMillis()); String tweet = "This message is tweeted " + d.toLocaleString(); try { twitter.updateStatus(tweet); } catch (TwitterException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (OAuthMessageSignerException e1) { } 
+4
source share
1 answer

It worked! instead of using a jury pointer library

provider.retrieveAccessToken (consumer, verifier)

I used twitter4j library

getOAuthAccessToken (requestToken, verifier)

  String verifier = uri.getQueryParameter(OAuth.OAUTH_VERIFIER); Twitter twitter = new TwitterFactory().getInstance(); twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); AccessToken accessToken = null;//get stored request tokens from database mDbHelper = DbAdapter.getInstance(); mDbHelper.open(); String[] dbRequestTokens = mDbHelper.getTwitterRequestTokens(); mDbHelper.close(); RequestToken requestToken = new RequestToken(dbRequestTokens[0], dbRequestTokens[1]); try { accessToken = twitter.getOAuthAccessToken(requestToken, verifier); //dataBase store accessTokens to tweet message or acces other twitter recources, and don't forget to set the OAuth Consumer with consumer key and secret mDbHelper.open(); mDbHelper.setTwitterAccessTokens(accessToken.getToken(), accessToken.getTokenSecret()); mDbHelper.close(); return "logged in succesfully"; } catch (TwitterException e) { e.printStackTrace(); return e.getMessage(); } 
+1
source

All Articles