2012-07-16 128 views
10

試圖使用twitter4j lib將我的webapp與Twitter集成。
我已經在twitter上註冊了我的應用程序,並獲得了Consumer keyConsumer secret的值。
沒什麼特別,標準OAuth一步。Twitter集成:已設置消費者密鑰/密鑰對

代碼:

public class TwitterService { 
    private final String CONSUMER_KEY = "xxx"; 
    private final String CONSUMER_SECRET = "yyy"; 

    public String fav() { 
     Twitter twitter = TwitterFactory.getSingleton(); 
     twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 
... 

例外:

Caused by: java.lang.IllegalStateException: consumer key/secret pair already set. 

我有keysecret,任何.properties或其他文件中沒有更多的配置。

編輯:

註釋行twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);導致異常:

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

回答

30

查看代碼和文檔,看起來好像不建議使用實例化實例的方法。如果您想以編程方式提供配置(並且不使用屬性),則看起來您需要向TwitterFactory提供Configuration

 
... 
ConfigurationBuilder builder = new ConfigurationBuilder(); 
builder.setOAuthConsumerKey(CONSUMER_KEY); 
builder.setOAuthConsumerSecret(CONSUMER_SECRET); 
Configuration configuration = builder.build(); 
TwitterFactory factory = new TwitterFactory(configuration); 
Twitter twitter = factory.getInstance(); 
... 

由尚未與配置默認提供給用Authorization實現由PropertyConfiguration配置支持的工廠提供的單例。如果沒有屬性文件,它看起來像它不應該實例化一個OAuthAuthorization身份驗證,這是什麼會導致你看到的異常。但是PropertyConfiguration確實在整個CLASSPATH中搜索適當的屬性文件,所以也許你忽略了一個。你可以嘗試登錄獲得Twitter實例後的密鑰和密碼正確,看看他們設置爲:

 
System.out.println("key:" + twitter.getConfiguration().getOAuthConsumerKey()); 
System.out.println("secret: " + twitter.getConfiguration().getOAuthConsumerSecret()); 
+1

不錯,謝謝你Araxia,即工作對我來說 – sergionni 2012-07-25 10:36:53

+0

grt work,thx ..! – 2013-05-15 11:48:17

0

我的預感是你設置的私人最終變量,然後twitter.setOAuthConsumer()正試圖做同樣的。你應該只需要一個或另一個。你有沒有試過註釋掉twitter.setOAuthConsumer()這一行?

Docs解釋了'首選'的方式來設置這些。

+0

看到我EDIT部分,please.Got異常,如果評論 – sergionni 2012-07-24 08:58:13

相關問題