2010-08-20 1 views
6

Android: Я пытаюсь использовать следующий пример xAuth для share and share.Android Twitter xAuth пример с помощью twitter4j

xAuth Authentication for Twitter Share in 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?

+0

Уверены ли вы, что ваш потребительKey и consumerSecret верны? Кроме того, я не думаю, что это даст такое исключение, но включили ли они XAuth для вашего приложения в Twitter? – DonSteep

ответ

5

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


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

+1

Я пробовал код выше, он дает следующее сообщение об исключении Комбинация имени экрана/пароля кажется недействительной. –

+0

Это сработало для меня. Очень полезный бит кода для тех, кто не успевает правильно изучить XAuth/OAuth. –

+0

@Faisal Khan Привет, у вас есть ключи для xAuth от Twitte. Вероятно, это может быть причиной ошибки. –

2

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

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