0

我尝试使用spring-social-twitter与Twitter建立流连接,但是当我尝试提出请求时,我得到了401 unauthorized春季社交Twitter流返回HTTP 401未授权

spring-social-twitter正试图连接到https://stream.twitter.com/1.1/statuses/filter.json。当我调试它,并试图得到response.getBody()我有HttpRetryException详细消息:cannot retry due to server authentication, in streaming mode

我有适当的授权的应用程序,但我没有授权访问令牌,因为我不需要它在这里。我使用1.1.0.RELEASE版本。

我会很乐意为您提供帮助!

这是我的呼吁流:

final Stream stream = twitter.streamingOperations().filter(keywords, listeners); 

这是我简单的监听器类:

private class TwitterStreamListener implements StreamListener { 

    private static final Logger LOGGER = LoggerFactory.getLogger(TwitterStreamListener.class); 

    @Override 
    public void onTweet(Tweet tweet) { 
     LOGGER.info("onTweet"); 
    } 

    @Override 
    public void onDelete(StreamDeleteEvent deleteEvent) { 
     LOGGER.info("onDelete"); 
    } 

    @Override 
    public void onLimit(int numberOfLimitedTweets) { 
     LOGGER.info("onLimit"); 
    } 

    @Override 
    public void onWarning(StreamWarningEvent warningEvent) { 
     LOGGER.info("onWarning"); 
    } 
} 

回答

0

我终于找到了答案。我在这里发布了它,所以也许它会帮助其他人解决同样的问题。

我发现Twitter在我连接自己之前阻止了我的应用程序建立流连接,作为浏览器客户端连接到应用程序。所以我需要接收用户的访问令牌来建立流连接。

之前当我尝试连接时 - 没有任何事发生。这是因为我在我的应用程序设置(在Twitter的页面上)中有错误的回调URL。

当我将回拨URL更改为http://127.0.0.1(它可以是任何类型的有效URL,并且您的应用程序不需要具有相同的内容,但不能使用类似localhost的内容)。

之后,我可以将我的应用程序连接到我的Twitter帐户,该帐户允许我开始流式连接。毕竟我不知道为什么Twitter需要用户连接流公共推文。搜索REST API不是必需的。