Twitter集成:已经设置了消费者密钥/秘密对

时间:2012-07-16 13:55:45

标签: twitter key integration twitter4j

尝试使用twitter4j lib将我的webapp与Twitter集成 我已在Twitter网站上注册了我的应用,并获得了Consumer keyConsumer 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.

我没有keysecret,任何.properties或其他文件的配置。

修改

评论专栏twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);会导致异常:

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

2 个答案:

答案 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解释了设置这些的“首选”方法。