想我与Twitter使用Web应用程序集成twitter4j库。
我已经注册了我的Twitter网站的应用程序,并得到了Consumer key
和Consumer secret
值。
没什么特别的,标准OAuth
一步。
码:
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.
我有没有更多的配置key
和secret
,任何.properties
或其他文件。
编辑:
注释线twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
导致异常:
java.lang.IllegalStateException: OAuth consumer key/secret combination not supplied
纵观代码和文档都,它看起来像你的实例化的方法, Twitter
,不推荐实例。 如果你想以编程电源配置(而不是使用属性),它看起来像你需要提供一个Configuration
到TwitterFactory
。
...
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());
我的直觉是你设置的私人最终变量,然后twitter.setOAuthConsumer()正试图这样做。 您只需要一个或另一个。 您是否尝试注释掉twitter.setOAuthConsumer()行?
该文档说明做这些设置的“首选”的方式。