0

spring-social-twitter を使用して Twitter にストリーム接続しようとしていますが、リクエストをしようとすると401 unauthorized.

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");
    }
}
4

1 に答える 1

0

最後に答えを見つけました。ここに投稿したので、同じ問題を抱えている他の人に役立つかもしれません。

ブラウザ クライアントとしてアプリに接続する前に、Twitter がアプリのストリーミング接続をブロックしていることに気付きました。そのため、ストリーム接続を行うには、ユーザーのアクセス トークンを受け取る必要がありました。

以前に接続しようとしたとき、何も起こりませんでした..アプリ設定(Twitterのページ)でCallback URLが間違っていたためです。

Callback URL を に変更したときhttp://127.0.0.1(有効な URL であればどのようなものでもかまいません。アプリケーションで同じものを使用する必要はありませんが、 のようなものは使用できませんlocalhost)。

その後、アプリを Twitter のアカウントに接続して、ストリーミング接続を開始することができました。結局のところ、Twitter がストリーム公開ツイートにユーザー接続を必要とする理由がわかりません。検索 REST API には必要ありません。

于 2015-11-15T20:34:48.603 に答える