尝试使用twitter4j lib将我的webapp与Twitter集成
我已在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
答案 0 :(得分:30)
查看代码和文档,看起来不建议您实例化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());
答案 1 :(得分:0)
我的预感是你设置私有的最终变量,然后twitter.setOAuthConsumer()试图做同样的事情。你应该只需要一个或另一个。你有没有试过评论twitter.setOAuthConsumer()行?
Docs解释了设置这些的“首选”方法。