В сайте twitter API перечислены 3 библиотеки java twitter.
Знаете ли вы других? Каковы ваши опыты в поддержке, простоте использования, стабильности, сообществе и т.д.
В сайте twitter API перечислены 3 библиотеки java twitter.
Знаете ли вы других? Каковы ваши опыты в поддержке, простоте использования, стабильности, сообществе и т.д.
Я думаю, что Twitter4j хорош, это самый современный API
Я просто посмотрел на них.
JTwitter определенно выглядит самым слабым из трех. В последнее время он, похоже, не обновлялся, не покрывает большую часть API Twitter и, похоже, не содержит каких-либо выпусков, кроме исходного. С другой стороны, LPGL лицензируется, поставляется с небольшим дополнительным кодом, который ему нужен, и выглядит мало и просто для понимания.
Другие два, java-twitter и Twtter4J выглядят намного ближе по качеству. Оба охватывают основной API, и оба имеют все преимущества обычных проектов с открытым исходным кодом: общедоступный репозиторий исходного кода, онлайновые документы, активные списки рассылки и последние разработки.
Однако Twitter4J выглядит лидером. Из документов это покрытие API выглядит более полным. Список рассылки определенно более активен. Документы намного лучше. И самое главное для меня, выпуски стали более частыми. java-twitter имеет один релиз, релиз "0.9-SNAPSHOT" около 4 месяцев назад. В течение этого периода у Twitter4J было несколько выпусков, включая 2.0.0 и инкрементные версии до 2.0.8, исправление проблем и добавление поддержки новых API-интерфейсов Twitter.
Я собираюсь начать с 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, который в настоящее время перечисляет на своем веб-сайте для Java, - это Twitter4J. Итак, если вам нужно было еще убедить, что это тот, который нужно использовать, ну, вот и вы!
Я выбрал Twitter4j, потому что на нем много людей. И его легко узнать об этом в Интернете.
Там также TweetStream4J, который является привязкой Java для API потоковой передачи Twitter. Это довольно просто, и в отличие от последнего, когда я использовал его, автор обновил его, включив в него файл pom.xml, чтобы вы могли его создать. Это довольно просто и быстро, когда я в последний раз его использовал (от Scala).