Пример Android Twitter xAuth с использованием twitter4j

Android: я пытаюсь использовать следующий пример xAuth для общего доступа к Android.

Аутентификация xAuth для Twitter Share в Android?

System.setProperty("twitter4j.oauth.consumerKey", "your token");
System.setProperty("twitter4j.oauth.consumerSecret", "your token secret");

Twitter twitter = new TwitterFactory().getInstance(login, password);

AccessToken accessToken = twitter.getOAuthAccessToken();
//Then you must save your Token and Token secret from AccesToken

if (mAccessToken != null) {
    if (mAccessToken.getToken() != null && mAccessToken.getTokenSecret() != null) {
        saveAccessToken(mAccessToken.getToken(), mAccessToken.getTokenSecret());
    }
}

У меня есть исключение IllegalStateException

Exception Msg: java.lang.IllegalStateException: OAuth consumer key/secret combination not supplied

в следующей строке

AccessToken accessToken = twitter.getOAuthAccessToken();

Я внес некоторые изменения, например, следующие

Twitter twitter = new TwitterFactory().getInstance("login", "pass");
            twitter.setOAuthConsumer(getString(R.string.twtAPIKey), getString(R.string.twtSecret));
            AccessToken mAccessToken = twitter.getOAuthAccessToken();

и снова я получил исключение Exception Msg: java.lang.IllegalStateException: Basic authenticated instance.

Любой рабочий пример xAuth?


person d-man    schedule 20.08.2010    source источник
comment
Вы уверены, что ваши ConsumerKey и ConsumerSecret верны? Кроме того, я не думаю, что это приведет к такому исключению, но включили ли они XAuth для вашего приложения в Twitter?   -  person DonSteep    schedule 20.08.2010


Ответы (2)


Я использовал следующие


ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();

     configurationBuilder.setOAuthConsumerKey(Consumer__Key);
     configurationBuilder.setOAuthConsumerSecret(Consumer_Secret);
     Configuration configuration = configurationBuilder.build();

     Twitter twitter = new TwitterFactory(configuration).getInstance("username","password"); 

     AccessToken token = twitter.getOAuthAccessToken();
     System.out.println("Access Token " +token );

     String name = token.getScreenName();
     System.out.println("Screen Name" +name);

     PrintWriter out= response.getWriter();
     System.out.println(token);

И успешно войдите в Twitter с помощью приложения Android, используя xauth

person success_anil    schedule 20.08.2010
comment
Я попробовал приведенный выше код, который выдает следующее сообщение об исключении. Комбинация имени экрана и пароля кажется недействительной. - person d-man; 20.08.2010
comment
Это сработало для меня. Очень полезный фрагмент кода для тех, у кого нет времени на изучение XAuth/OAuth. - person Reuben Scratton; 26.10.2010
comment
@Faisal Khan Привет. У вас есть ключи для xAuth от Twitte. Вероятно, это могло быть причиной ошибки. - person success_anil; 27.10.2010
comment
Да, мы должны попросить парней из твиттера иметь специальную учетную запись xauth и ключи. - person d-man; 27.10.2010
comment
Я столкнулся с тем же. Комбинация имени экрана и пароля кажется недействительной. Это потому, что мне нужно включить xAuth, или, возможно, есть другой возможный обходной путь? - person anta40; 04.01.2011
comment
@ anta40 Насколько я знаю, решения этой проблемы нет. Потому что твиттер не позволит вам получить доступ к своей базе данных без включения xAuth для ключей...... - person success_anil; 06.01.2011

Версия 2.2.2 twitter4j с небольшим изменением. Это работает:

Configuration configuration = new ConfigurationBuilder()
.setOAuthConsumerKey("your_customer_key")
.setOAuthConsumerSecret("your_customer_secret")
.build();

Twitter twitter = new TwitterFactory(configuration).getInstance(new BasicAuthorization(username, password)); // yes, use "BasicAuthorization" although that seems strange

AccessToken token = twitter.getOAuthAccessToken();
Log.d(TAG, "Access token: " + token.getToken());
Log.d(TAG, "Access token secret: " + token.getTokenSecret());

Помните, что ваше клиентское приложение Twitter должно быть авторизовано для использования xAuth, прежде чем это заработает.

person Randy Sugianto 'Yuku'    schedule 11.05.2011