Я пытаюсь обновить статус в твиттере, используя банку twitter4j, но это не работает

Логкат:

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    

я установил разрешение на чтение, запись в настройках моего приложения, хотя оно дает.

Вот весь мой код.

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) {

        }
    }
}

Только я вижу, что он может читать имя экрана, хотя я установил разрешение на чтение и запись в настройках своего приложения. Заранее спасибо.


person sayem siam    schedule 05.12.2011    source источник
comment
Какая строка вашего кода вызывает ошибку?   -  person Ted Hopp    schedule 05.12.2011
comment
Вы используете twitter4j 2.2.5 или выше? Twitter сейчас требует безопасного подключения, а все, что ниже 2.2.5, не может безопасно подключаться.   -  person jmcdale    schedule 06.12.2011
comment
Я протестировал использование моментального снимка twitter4j 2.2.6, но та же проблема.   -  person sayem siam    schedule 06.12.2011
comment
Вы проверили синхронизацию часов?   -  person Pete    schedule 24.05.2012


Ответы (3)


У меня тоже была эта проблема, когда я изменил разрешения на доступ к Twitter Api.

Regenerating the Access Token solved it
person Sudhakar    schedule 10.03.2013
comment
Используйте SocialAuth Android code.google.com/p/socialauth-android . Кроме того, не публикуйте одно и то же сообщение дважды в твиттере. - person vineet; 11.03.2013

Вы должны зайти в свое приложение на веб-сайте разработчика Twitter и изменить разрешение своих приложений на «Чтение и запись».

введите здесь описание изображения

person Conor Bradley    schedule 06.03.2014

Посмотрите, работает ли следующее. У меня возникли проблемы с использованием twitter4j.auth.AccessToken напрямую:

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(...);
person John    schedule 04.09.2014