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



尝试使用twitter4j-lib将我的Web应用程序与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

从代码和文档来看,不建议使用实例化Twitter实例的方法。如果您想以编程方式提供配置(而不使用属性),则需要向TwitterFactory提供Configuration

。。。ConfigurationBuilder builder=新ConfigurationBuilder();builder.setOAuthConsumerKey(CONSUMER_KEY);builder.setOAuthConsumerSecret(CONSUMER_SECRET);配置配置=builder.build();TwitterFactory工厂=新的TwitterFactory(配置);Twitter Twitter=工厂.getInstance();。。。

未提供配置的工厂提供的单例默认使用由PropertyConfiguration配置支持的Authorization实现。如果没有属性文件,则看起来不应该实例化OAuthAuthorization身份验证,这将导致您看到的异常。但是PropertyConfiguration确实会在整个CLASSPATH中搜索适当的属性文件,所以您可能忽略了其中一个。您可以在获得Twitter实例后立即尝试记录密钥和机密,以查看它们设置为:

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

我的直觉是,你正在设置私有的最终变量,然后twitter.setOAuthConsumer()也在尝试这样做。你应该只需要其中一个。你有没有试着评论掉twitter.setOAuthConsumer()行?

文档解释了设置这些内容的"首选"方式。

最新更新