有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (6) 个答案

  1. # 1 楼答案

    我使用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的包装器。啁啾TwitterCnx定义了我的OAuth消费品,并返回一个Twitter对象。它是带有静态方法的最后一个类,所以我不会为每个应用实例生成多个Twitter对象

  2. # 2 楼答案

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

  3. # 3 楼答案

    我只是看了一眼

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

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

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

    我将从Twitter4J开始;如果你没有回音,假设这对我来说很好

  4. # 4 楼答案

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

  5. # 5 楼答案

    啊哼JTwitter被积极维护,定期更新(今天发布的1.6.2版),并覆盖了大部分Twitter API

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

    它也很快和强大。Twitter在某些地方可能很脆弱,而JTwitter有变通方法和信息丰富的例外,可以让你的生活更轻松

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

  6. # 6 楼答案

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