【问题标题】:Best java twitter library? [closed]最好的 java twitter 库? [关闭]
【发布时间】:2021-02-23 22:25:52
【问题描述】:

twitter API 站点列出了 4 个 java twitter 库。

你认识其他人吗?您在支持、易用性、稳定性、社区等方面有何经验?

【问题讨论】:

  • 我要冒险了,也想好好对比一下。
  • 别忘了Spring Social, Twitter
  • 我已经创建了一个网站提案,以便为此类问题提供远离 Stack Overflow 的官方主页。它被称为Code Recommendations 现在加入并提出问题,帮助实现它!

标签: java twitter


【解决方案1】:

我只是看了看。

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 开始;如果您没有收到回复,请假设这对我来说很棒。

【讨论】:

  • 经过一个月的测试,Twitter4J 看起来相当不错。我完全赞成。
  • 您的 JTwitter cmets 不准确,尽管 JTwitter 网站的简短而简单的性质(1 页 + javadoc, 0 bumpf)可能是部分原因。
  • 我相信当时的 cmets 是准确的(2009 年 6 月)。我想从那以后的 32 个月里有些事情发生了变化。也许您可以对图书馆的现状发表评论?
  • 当然。 JTwitter 由 SoDash Ltd (sodash.com) 积极维护。它涵盖了几乎所有的 Twitter API。当 Twitter 发生变化时,我们会在一个月内更新和发布。我们在健壮性方面做了很多工作,为 Twitter 中的一些错误提供了良好的错误报告和内置解决方法。该库还为 Klout 等生态系统服务提供了一些支持。
【解决方案2】:

我认为 Twitter4j 很好,它是最新的 API

【讨论】:

    【解决方案3】:

    咳咳; JTwitter 得到积极维护,定期更新(今天发布 1.6.2 版),并涵盖了大部分 Twitter API。

    它只缺少一种设置您的个人资料图片和其他一些个人资料设置的方法。除此之外,它非常完整。状态更新、时间线、友谊、列表、搜索、流媒体等。

    它也快速而强大。 Twitter 在某些地方可能会出现问题,而 JTwitter 有变通办法和信息丰富的例外情况,让您的生活更轻松。

    作为主要的 JTwitter 开发者,我是有偏见的!但是使用 JTwitter 的开发者的反馈也非常积极。

    【讨论】:

      【解决方案4】:

      我使用 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 对象。

      【讨论】:

        【解决方案5】:

        对于仍在关注这个问题的任何人,值得一提的是,Twitter currently lists on its website 用于 Java 的唯一 API 是 Twitter4J。所以,如果你需要更多的说服力来证明这是可以使用的,那么,给你!

        【讨论】:

          【解决方案6】:

          我选择了 Twitter4j,因为很多人都在研究它。并且很容易在互联网上找到一些关于它的内容。

          【讨论】:

            【解决方案7】:

            还有 TweetStream4J,它是 Twitter 流 API 的 Java 绑定。它非常简单,并且与我上次使用它不同,作者对其进行了更新以包含一个 pom.xml 文件,以便您可以构建它。我上次使用它时非常简单快捷(来自 Scala)。

            【讨论】:

              猜你喜欢
              • 2010-10-25
              • 2010-11-08
              • 1970-01-01
              • 2011-02-08
              • 1970-01-01
              • 1970-01-01
              • 2011-02-02
              • 2010-09-08
              • 2012-03-05
              相关资源
              最近更新 更多