永不结束的故事:Twitter身份验证

时间:2016-11-24 22:55:41

标签: java twitter oauth authorization twitter4j

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

  1. 我创建了一个Twitter帐户并将时区更改为我的祖国
  2. 我在Twitter上创建了一个应用程序
  3. 我使用Twitter4J Streaming API 4.0.0
  4. 在Java / Maven中创建了一个ClientApp
  5. 我在配置构建器中放置了Api-Key,Secret-Key和Access-Tokens
  6. 我从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();
    
  7. 401:身份验证凭据(https://dev.twitter.com/pages/auth)丢失或不正确。确保您已设置有效的使用者密钥/密钥,访问令牌/密钥,并且系统时钟处于同步状态。

    请帮忙。

1 个答案:

答案 0 :(得分: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:您可能想要隐藏应用程序特定的密钥/令牌