twitter API网站列出了3个java twitter库。
你知道其他人吗?您在支持,易用性,稳定性,社区等方面有哪些经验答案 0 :(得分:39)
我刚看了一眼。
JTwitter看起来绝对是三者中最弱的一个。它似乎最近没有更新,没有覆盖很多Twitter API,并且除了最初的API之外似乎没有任何版本。从好的方面来说,它是LPGL许可的,它包含了它需要的额外代码,并且看起来小而且易于理解。
另外两个,java-twitter和Twtter4J在质量上看起来更接近。两者都涵盖核心API,并且都具有普通开源项目的所有功能:公开可用的源代码存储库,在线文档,活动邮件列表和最近的开发活动。
然而,Twitter4J看起来是领导者。从文档中,它的API覆盖范围似乎更加完整。邮件列表肯定更活跃。文档要好得多。对我来说最重要的是,版本更频繁。 java-twitter有一个版本,大约4个月前的“0.9-SNAPSHOT”版本。 Twitter4J在那个时期发布了多个版本,其中包括2.0.0和增量版本,最高可达2.0.8,解决问题并增加对新Twitter API的支持。
我将从Twitter4J开始;如果你没有回复,那就认为这对我来说很棒。
答案 1 :(得分:25)
我认为Twitter4j是最好的,它是最新的API
答案 2 :(得分:10)
咳咳; JTwitter得到了积极维护,定期更新(今天发布的版本1.6.2),涵盖了大部分Twitter API。
它只缺少设置个人资料图片和其他一些个人资料设置的方法。除此之外,它非常完整。状态更新,时间表,友谊,列表,搜索,流媒体等
它也快速而强大。 Twitter可能会出现问题,JTwitter可以提供解决方案和信息异常,让您的生活更轻松。
作为主要的JTwitter开发者,我很偏颇!但是使用JTwitter的开发人员的反馈也是非常积极的。
答案 3 :(得分:8)
我使用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对象。
答案 4 :(得分:2)
对于仍然关注这个问题的人来说,值得一提的是,Twitter currently lists on its website for Java的唯一API就是Twitter4J。所以,如果你需要更加令人信服的话,那就是使用它,好吧,你走了!
答案 5 :(得分:0)
我选择了Twitter4j,因为很多人都在努力。并且很容易在互联网上找到一些关于它的内容。
答案 6 :(得分:0)
还有 TweetStream4J ,它是Twitter Streaming API的Java绑定。它非常简单,与上次使用它不同,作者已将其更新为包含pom.xml文件,以便您可以构建它。我上次使用它时非常简单快捷(来自Scala)。