0

我尝试使用 spring-social-twitter 与 Twitter 建立流连接,但是当我尝试发出请求时,我得到了401 unauthorized.

spring-social-twitter 正在尝试连接到https://stream.twitter.com/1.1/statuses/filter.jsonresponse.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");
    }
}
4

1 回答 1

0

最后我找到了答案。我把它贴在这里,所以也许它会帮助其他人解决同样的问题。

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

早些时候,当我尝试连接时 - 什么也没发生。这是因为我的应用设置中的回调 URL 错误(在 Twitter 页面上)。

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

之后,我可以将我的应用程序连接到我的 Twitter 帐户,这使我可以开始流式连接。毕竟我不知道为什么 Twitter 需要用户连接才能发布公共推文。搜索 REST API 不需要它。

于 2015-11-15T20:34:48.603 回答