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不是必需的。