【问题标题】:Twitter integration:consumer key/secret pair already setTwitter 集成:已设置用户密钥/密钥对
【发布时间】:2012-07-15 09:25:04
【问题描述】:

尝试使用 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

【问题讨论】:

    标签: twitter key integration twitter4j


    【解决方案1】:

    我的预感是您正在设置私有最终变量,然后 twitter.setOAuthConsumer() 正在尝试做同样的事情。您应该只需要其中一个。您是否尝试过注释掉 twitter.setOAuthConsumer() 行?

    Docs 解释了设置这些的“首选”方式。

    【讨论】:

    • 请看我编辑部分。如果评论有异常
    【解决方案2】:

    查看代码和文档,您的实例化Twitter 实例的方法似乎不被推荐。如果您想以编程方式提供配置(而不是使用属性),看起来您需要为TwitterFactory 提供Configuration

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-03-12
      • 2017-09-01
      • 1970-01-01
      • 2023-03-28
      • 2011-07-07
      • 1970-01-01
      • 2021-05-12
      • 2012-01-12
      相关资源
      最近更新 更多