Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最佳java twitter库?_Java_Twitter - Fatal编程技术网

最佳java twitter库?

最佳java twitter库?,java,twitter,Java,Twitter,twitterapi站点列出了4个javatwitter库 你认识其他人吗?您在支持、易用性、稳定性、社区性等方面有哪些经验。我认为Twitter4j是一款不错的产品,它是最新的API我刚刚看了一下 JTwitter看起来绝对是三个中最弱的。它似乎最近没有更新,没有涵盖Twitter API的大部分内容,除了最初的版本外,似乎没有其他版本。从正面来看,它是LPGL许可的,附带了它所需的少量额外代码,并且看起来小巧易懂 另外两个,javatwitter和Twtter4J在质量上看起来更

twitterapi站点列出了4个javatwitter库


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

我认为Twitter4j是一款不错的产品,它是最新的API

我刚刚看了一下

JTwitter看起来绝对是三个中最弱的。它似乎最近没有更新,没有涵盖Twitter API的大部分内容,除了最初的版本外,似乎没有其他版本。从正面来看,它是LPGL许可的,附带了它所需的少量额外代码,并且看起来小巧易懂

另外两个,javatwitter和Twtter4J在质量上看起来更接近。两者都涵盖了核心API,并且都拥有普通开源项目的所有装备:公开可用的源代码存储库、在线文档、活动邮件列表和最近的开发活动

然而,Twitter4J看起来是领导者。从文档来看,它的API覆盖范围似乎更加完整。邮件列表肯定更活跃。这些文件好多了。对我来说最重要的是,发布的频率更高。JavaTwitter已经发布了一个版本,大约4个月前的“0.9-SNAPSHOT”版本。Twitter4J在这段时间内发布了多个版本,包括2.0.0和2.0.8之前的增量版本,修复了问题并增加了对新Twitter API的支持


我将从Twitter4J开始;如果你没有回音,那就假设它对我来说太棒了。

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

我使用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对象;积极维护、定期更新(今天发布的1.6.2版),涵盖了大部分Twitter API

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

它也快速而健壮。Twitter在某些地方可能会变得不稳定,JTwitter有变通办法和信息丰富的例外情况,让你的生活更轻松


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

还有一个,它是Twitter流媒体API的Java绑定。它非常简单,与我上次使用它时不同,作者已将其更新为包含pom.xml文件,以便您可以构建它。当我上次使用它时(从Scala开始),它非常简单和快速。

对于仍然关注这个问题的人来说,值得一提的是,Twitter For Java的唯一API是Twitter4J。所以,如果你需要更多的说服力,这是一个使用,好吧,给你

我马上就要冒这个险了,我也想做一个很好的比较。别忘了
Spring Social,Twitter
。我已经创建了一个网站提案,为这样的问题提供一个远离堆栈溢出的官方主页。这叫做帮助,现在就加入并提问,让它成为现实!试试姐妹网站:经过一个月的戳戳,Twitter4J看起来相当棒。我完全赞成。你的JTwitter评论并不准确,尽管JTwitter网站(1页+javadoc,0 bumpf)的简短本质可能是部分原因。我相信当时(2009年6月)的评论是准确的。我想从那以后的32个月里有些事情已经改变了。也许你可以评论一下图书馆现在的状况?当然可以。JTwitter由苏打灰有限公司积极维护()。它涵盖了几乎所有的Twitter API。当Twitter发生变化时,我们会在一个月内进行更新和发布。我们在健壮性方面做了大量工作,提供了良好的错误报告和内置的解决Twitter中某些bug的方法。该图书馆还为Klout等生态系统服务提供了一些支持。