it-swarm.com.de

Beste Java Twitter Bibliothek?

Die Twitter-API-Site listet 3 Java-Twitter-Bibliotheken auf.

Kennst du andere Welche Erfahrungen haben Sie mit Support, Benutzerfreundlichkeit, Stabilität, Community usw. gemacht?.

62
flybywire

Ich denke, Twitter4j ist gut, es ist die aktuellste API

25
Rahul Garg

Ich habe sie mir nur angesehen.

JTwitter scheint definitiv das schwächste der drei zu sein. Es scheint in letzter Zeit nicht aktualisiert worden zu sein, deckt nicht viel von der Twitter-API ab und scheint außer der ersten keine Releases zu haben. Auf der anderen Seite, es ist LPGL-lizenziert, wird mit etwas zusätzlichem Code verpackt und erscheint klein und einfach zu verstehen.

Die anderen beiden, Java-Twitter und Twtter4J, sehen in der Qualität viel näher aus. Beide decken die Kern-API ab, und beide verfügen über alle Ausstattungen normaler Open-Source-Projekte: öffentlich zugängliches Quellcode-Repository, Online-Dokumente, aktive Mailing-Listen und aktuelle Entwicklungsaktivitäten.

Twitter4J scheint jedoch der Anführer zu sein. Aus den Dokumenten scheint die API-Abdeckung vollständiger zu sein. Die Mailingliste ist definitiv aktiver. Die Dokumente sind viel besser. Und am wichtigsten für mich waren die Veröffentlichungen häufiger. Java-Twitter hat eine Veröffentlichung, die "0.9-SNAPSHOT" -Version vor etwa 4 Monaten. Twitter4J hatte in diesem Zeitraum mehrere Releases, einschließlich 2.0.0 und inkrementelle Releases bis 2.0.8. Es wurden Probleme behoben und neue Twitter-APIs unterstützt.

Ich fange mit Twitter4J an. Wenn Sie nichts hören, nehmen Sie an, es war einfach toll für mich.

39
William Pietri

Hm; JTwitter wird aktiv gewartet, regelmäßig aktualisiert (Version 1.6.2 wurde heute veröffentlicht) und deckt den größten Teil der Twitter-API ab. 

Es fehlt nur eine Methode zum Einstellen Ihres Profilbildes und einige andere Profileinstellungen. Abgesehen davon ist es ziemlich komplett. Statusaktualisierungen, Zeitpläne, Freundschaften, Listen, Suchen, Streaming usw.

Es ist auch schnell und robust. Twitter kann an Orten unübersichtlich sein, und JTwitter hat Umgehungen und informative Ausnahmen, um Ihnen das Leben zu erleichtern.

Als Hauptentwickler von JTwitter bin ich eher voreingenommen! Das Feedback von Entwicklern, die JTwitter verwenden, ist jedoch auch sehr positiv.

10

Ich benutze Twitter4J und habe noch kein Problem damit. Ich mag es eigentlich sehr.

Das OAuth-Beispiel, das sie auf ihrer Website angeben, ist das größte Ärgernis - es ist nicht hilfreich. Hier ist mein OAuthServlet-Code, wenn Sie interessiert sind (oder jemand anderes). Ich weiß, dass diese Frage ziemlich alt ist, deshalb stelle ich sie hier eher für Suchergebnisse ein.

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.
    }
}

Ich benutze die Klasse TwitterCnx als Wrapper für Twitter4j.Twitter. TwitterCnx definiert meine OAuth-Consumer-Artikel und gibt ein Twitter-Objekt zurück. Es ist eine letzte Klasse mit statischen Methoden, sodass ich pro App-Instanz nicht mehr als ein Twitter-Objekt produziere.

8
Ted Pennings

Für jeden, der sich diese Frage noch immer ansieht, ist es erwähnenswert, dass Twitter4/die einzige API, die Twitter derzeit auf seiner Website für Java aufführt, Twitter4J ist. Wenn Sie also noch mehr davon überzeugt haben, dass dies der Fall ist, dann können Sie loslegen!

2
AbsentMoniker

Es gibt auchTweetStream4J. Dies ist eine Java-Bindung für die Twitter Streaming-API. Es ist ziemlich einfach und anders als beim letzten Mal wurde es vom Autor so aktualisiert, dass es eine pom.xml-Datei enthält, damit Sie es erstellen können. Es ist ziemlich einfach und schnell, als ich es zuletzt benutzt habe (von Scala).

0
Tom Morris

Ich habe Twitter4j ausgewählt, weil viele Leute daran arbeiten. Und es ist leicht, einige Inhalte im Internet darüber zu erfahren. 

0
Tahir Akram