【问题标题】:Never Ending Story: Twitter Authentication永无止境的故事:Twitter 身份验证
【发布时间】:2017-04-09 07:04:43
【问题描述】:

这似乎是一个永无止境的故事,但我无法从 Twitter4J 流 API 访问 Twitter。

  1. 我创建了一个 Twitter 帐户并将时区更改为我的祖国
  2. 我在 Twitter 中创建了一个应用程序
  3. 我使用 Twitter4J Streaming API 4.0.0 在 Java/Maven 中创建了一个 ClientApp
  4. 我将 Api-Key、Secret-Key 和 Access-Tokens 放在了配置生成器中
  5. 我从 Twitter 收到异常

    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setDebugEnabled(true);
    cb.setOAuthConsumerKey("xxxxxxxxxx");
    cb.setOAuthConsumerSecret("xxxxxxxxxxx");
    cb.setOAuthAccessToken("xxxxxxxxxxxxx");
    cb.setOAuthAccessTokenSecret("xxxxxxxxxxxx");
    
    TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance();
    
    StatusListnerImpl statusListenerImpl = new StatusListnerImpl();
    
    twitterStream.addListener(statusListenerImpl);
    
    twitterStream.sample();
    

401:身份验证凭据 (https://dev.twitter.com/pages/auth) 丢失或不正确。确保您设置了有效的消费者密钥/秘密、访问令牌/秘密,并且系统时钟同步。

请帮忙。

【问题讨论】:

  • 感谢您的编辑,但我写的凭据仅用于此帖子。

标签: java twitter oauth authorization twitter4j


【解决方案1】:

为了简洁和简单,我建议在 project_name/resources/twitter4j.properties 下创建一个单独的文件,其内容为:

debug=true
##Get the following from https://dev.twitter.com/
oauth.consumerKey=XXX
oauth.consumerSecret=XXX
oauth.accessToken=XXX
oauth.accessTokenSecret=XXX

然后你可以创建一个新的 TwitterStream 对象,简单如下:

TwitterStream twitterStream = new TwitterStreamFactory().getInstance();

只需确保属性文件在编译时可用。 由于您使用的是 maven,因此在 pom.xml 文件(在构建部分)中添加以下代码:

        <resources>
            <resource>
                <directory>${basedir}/resources</directory>
            </resource>
        </resources>

PS:您可能想要隐藏应用程序特定的密钥/令牌

【讨论】:

  • 感谢您的回答。我知道这种代码不是很干净。这只是为了测试。但是钥匙和代币的外包并不能解决问题。在检查了 http 标头后,我发现我的时间和 twitter 的时间相差 5 分钟。不过非常感谢。
猜你喜欢
  • 2018-02-19
  • 2011-08-04
  • 2013-11-28
  • 2011-06-18
  • 2013-04-11
  • 2011-04-25
  • 2011-06-10
  • 1970-01-01
相关资源
最近更新 更多