问题
Logcat:
12-06 09:23:25.673: D/final(537): caught
12-06 09:23:27.003: D/userName(537): sayemsiam
12-05 12:42:20.783: W/System.err(588): 401:Authentication credentials (https://dev.twitter.com/docs/auth) were missing or incorrect. Ensure that you have set valid conumer key/secret, access token/secret, and the system clock in in sync.
12-05 12:42:20.783: W/System.err(588): error - Read-only application cannot POST
12-05 12:42:20.783: W/System.err(588): request - /1/statuses/update.json
i have set read,write permission in my application settings though it gives.
Here is my whole code.
public class TweetActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
// configurationBuilder.setOAuthConsumerKey(CONSUMER_KEY);
// configurationBuilder.setOAuthConsumerSecret(CONSUMER_SECRET);
CustomAsyncTask cm = new CustomAsyncTask();
cm.execute(new String[] { "df" });
}
private class CustomAsyncTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String CALLBACK_URI = "http://myapp.com";
String CONSUMER_KEY = "********************";
String CONSUMER_SECRET = "************************";
String ACCESS_TOKEN = "*******************";
String ACCESS_TOKEN_SECRET = "***********************";
AccessToken ac = new AccessToken(ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
Log.d("robin", "caught");
// Configuration configuration = configurationBuilder.build();
// Twitter twitter = new
// TwitterFactory(configuration).getInstance(ac);
Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
twitter.setOAuthAccessToken(ac);
Log.d("sayfsdem", "caught");
try {
twitter4j.Status status = twitter
.updateStatus("tihs sw th aa updatein");
Log.d("status", status.toString());
} catch (TwitterException e) {
// TODO Auto-generated catch block
Log.d("final", "caught");
e.printStackTrace();
}
try {
Log.d("userName", twitter.getScreenName());
// Log.d("password",twitter.getFavorites()());
} catch (IllegalStateException e) {
Log.d("illesayem", "caught");
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TwitterException e) {
Log.d("fdfds", "caught");
// TODO Auto-generated catch block
e.printStackTrace();
}
return "dfs";
}
@Override
protected void onPostExecute(String result) {
}
}
}
Only i can see that it can read the screen name though i have set read write permission in my application settings. Thanks in advance.
回答1:
I too had this issue when i changed Twitter Api Access permissions.
Regenerating the Access Token solved it
回答2:
You have to go onto your Application on the Twitter developer website and change your apps permission to Read & Write.

回答3:
See if the following works, I've had trouble using twitter4j.auth.AccessToken directly:
ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder.setOAuthConsumerKey(CONSUMER_KEY);
configurationBuilder.setOAuthConsumerSecret(CONSUMER_SECRET(;
configurationBuilder.setOAuthAccessToken(ACCESS_TOKEN);
configurationBuilder.setOAuthAccessTokenSecret(ACCESS_TOKEN_SECRET);
Configuration configuration = configurationBuilder.build();
Twitter twitter = new TwitterFactory(configuration).getInstance();
twitter.whatever(...);
来源:https://stackoverflow.com/questions/8382021/i-am-trying-to-update-status-to-twitter-using-twitter4j-jar-but-it-does-not-work