IT박스

최고의 자바 트위터 라이브러리?

itboxs 2020. 11. 25. 07:47
반응형

최고의 자바 트위터 라이브러리?


트위터 API 사이트에는 3 개의 자바 트위터 라이브러리가 있습니다.

다른 사람들을 알고 있습니까? 지원, 사용 편의성, 안정성, 커뮤니티 등에 대한 귀하의 경험은 무엇입니까?


Twitter4j가 가장 최신 API라고 생각합니다.


방금 봤어요.

JTwitter는 확실히 세 가지 중 가장 약한 것 같습니다. 최근에 업데이트되지 않은 것으로 보이며 Twitter API를 많이 다루지 않으며 초기 버전 외에는 릴리스가없는 것으로 보입니다. 장점은 LPGL 라이선스이며 필요한 추가 코드가 패키지로 제공되며 작고 이해하기 간단 해 보입니다.

다른 두 개의 java-twitter 및 Twtter4J는 품질면에서 훨씬 더 가까워 보입니다. 둘 다 핵심 API를 다루며 공개적으로 사용 가능한 소스 코드 저장소, 온라인 문서, 활성 메일 링 목록 및 최근 개발 활동과 같은 일반 오픈 소스 프로젝트의 모든 권한을 가지고 있습니다.

그러나 Twitter4J가 리더로 보입니다. 문서에서 API 범위가 더 완전한 것으로 보입니다. 메일 링리스트는 확실히 더 활동적입니다. 문서가 훨씬 낫습니다. 그리고 나에게 가장 중요한 것은 릴리스가 더 자주 이루어 졌다는 것입니다. java-twitter는 약 4 개월 전에 "0.9-SNAPSHOT"릴리스가 한 번 출시되었습니다. Twitter4J는 해당 기간 동안 2.0.0 및 2.0.8까지의 증분 릴리스를 포함하여 여러 릴리스를 출시했으며 문제를 수정하고 새로운 Twitter API에 대한 지원을 추가했습니다.

Twitter4J부터 시작하겠습니다. 답장을받지 못했다면 그게 나에게 좋았다고 생각하세요.


에헴; JTwitter 는 적극적으로 유지 관리되고 정기적으로 업데이트되며 (오늘 출시 된 버전 1.6.2) 대부분의 Twitter API를 다룹니다.

프로필 이미지를 설정하는 방법과 몇 가지 다른 프로필 설정 만 누락되었습니다. 그 외에는 꽤 완벽합니다. 상태 업데이트, 타임 라인, 우정, 목록, 검색, 스트리밍 등

또한 빠르고 강력합니다. 트위터는 장소가 불안정 할 수 있으며 JTwitter에는 사용자의 삶을 편하게 해주는 해결 방법과 유익한 예외가 있습니다.

JTwitter의 메인 개발자로서 저는 다소 편견이 있습니다! 그러나 JTwitter를 사용하는 개발자의 피드백도 매우 긍정적입니다.


Twitter4J를 사용하지만 아직 문제가 없습니다. 나는 실제로 그것을 많이 좋아합니다.

웹 사이트에서 제공하는 OAuth 예제는 가장 큰 골칫거리이며 도움이되지 않습니다. 관심이 있으시면 여기에 내 OAuthServlet 코드가 있습니다. 이 질문이 다소 오래되었다는 것을 알고 있으므로 검색 결과를 위해 여기에 더 많이 넣겠습니다.

package com.example.oauth;

import java.io.PrintWriter;
import java.io.IOException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import twitter4j.*;
import twitter4j.http.*;


@SuppressWarnings("serial")
public class OAuthServlet extends HttpServlet {

    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {

        HttpSession sess = req.getSession(true);
        RequestToken requestToken = (RequestToken) sess.getAttribute("requestToken");



        if (sess.getAttribute("twitter_user_id") != null) {
            resp.setContentType("text/plain");
            PrintWriter out = resp.getWriter();
            if (req.getRequestURI().indexOf("logout") > 3) {
                sess.removeAttribute("twitter_user_id");
                out.println("You're now logged out.");
            } else {
                out.println("You're already logged in!");
            }
        } else if (req.getRequestURI().indexOf("callback") > 3 && req.getParameter("oauth_token").length() > 0 && requestToken != null) {

            handleCallback(req, resp, sess);
            if (sess.getAttribute("oauth_previous") != null) {
                resp.sendRedirect((String) sess.getAttribute("oauth_previous"));
                sess.removeAttribute("oauth_previous");
            }

        } else {

            sendToTwitter(resp, sess);
            sess.setAttribute("oauth_previous", req.getHeader("Referer"));
        }

    }

    private void sendToTwitter(HttpServletResponse resp, HttpSession sess) throws IOException {

        RequestToken requestToken = (RequestToken) sess.getAttribute("requestToken");

        try {
            Twitter twitter = new TwitterCnx().registerOAuth().get();

            requestToken = twitter.getOAuthRequestToken();
            sess.setAttribute("requestToken", requestToken);

            resp.sendRedirect(requestToken.getAuthorizationURL());


        } catch (TwitterException e) {
            PrintWriter out = resp.getWriter();
            out.println(e.getStackTrace());
        }
    }

    private void handleCallback(HttpServletRequest req, HttpServletResponse resp, HttpSession sess) throws IOException {

        RequestToken requestToken = (RequestToken) sess.getAttribute("requestToken");
        sess.removeAttribute("requestToken");
        String secret = req.getParameter("oauth_token");

        resp.setContentType("text/plain");
        PrintWriter out = resp.getWriter();

        try {
            Twitter t = new TwitterCnx().registerOAuth().get();

            AccessToken accessToken = t.getOAuthAccessToken(requestToken.getToken(), secret);
            long id = (long) t.verifyCredentials().getId();

            storeAccessToken(id, accessToken,sess);
            sess.setAttribute("twitter_user_id", id);

            out.println("You're now logged in!");

        } catch (TwitterException e) {
            out.println("Something went wrong. Sorry about that. Please try again.");
        }

    }



    private void storeAccessToken(Long id, AccessToken at, HttpSession sess) {
        //you probably want to persist this somewhere other than in sessions.
        sess.setAttribute("secret", at.getTokenSecret() );
        sess.setAttribute("token", at.getToken());
        //also, don't forget to persist the user id alongside the token.
    }
}

TwitterCnx 클래스를 twitter4j.Twitter의 래퍼로 사용합니다. TwitterCnx는 내 OAuth 소비자 항목을 정의하고 Twitter 개체를 반환합니다. 정적 메서드가있는 최종 클래스이므로 앱 인스턴스 당 하나 이상의 Twitter 개체를 생성하지 않습니다.


여전히이 질문을보고있는 사람이라면 트위터가 현재 자바 용 웹 사이트나열 하는 유일한 API 가 Twitter4J 라는 점을 언급 할 가치가 있습니다. 따라서 이것이 사용할 제품이라는 확신이 더 필요하다면 여기 있습니다!


I have selected Twitter4j because a lot of people are working on it. And its easy to find out some contents on Internet about it.


There's also TweetStream4J which is a Java binding for the Twitter Streaming API. It's pretty simple, and unlike the last time I used it, the author has updated it to include a pom.xml file so you can build it. It's pretty simple and quick when I last used it (from Scala).

참고URL : https://stackoverflow.com/questions/851767/best-java-twitter-library

반응형