Лучший Java библиотека Твиттера? [закрытый]

Определяется список шаблонов URL в переменной с именем urlpatterns, , а не urls s>, как указано в документации по отправке URL-адресов [Django -doc] :

(...)

Django загружает этот модуль Python и ищет переменную urlpatterns . Это должен быть список Python экземпляров django.urls.path() и / или django.urls.re_path().

(...)

blockquote>

Таким образом, система выдает ошибку, из-за которой вы что-то забыли. Вы можете исправить это, переименовав urls в urlpatterns:

# account/urls.py

from django.contrib.auth import views
from . import views

urlpatterns = [
    path('login/', views.user_login, name='login'),
]

63
задан Виталий Олегович 7 February 2017 в 12:46
поделиться

6 ответов

Я думаю, что Twitter4j - хороший вариант, это самый современный API

25
ответ дан 24 November 2019 в 16:27
поделиться

Я только что взглянул на них.

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; если ты не получишь ответ, считай, это было просто здорово для меня.

39
ответ дан 24 November 2019 в 16:27
поделиться

Я выбрал Twitter4j, потому что над ним работают многие люди. И об этом легко найти в Интернете.

0
ответ дан 24 November 2019 в 16:27
поделиться

Я использую 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 для каждого экземпляра приложения.

8
ответ дан 24 November 2019 в 16:27
поделиться

Кхм; JTwitter активно поддерживается, регулярно обновляется (сегодня выпущена версия 1.6.2) и охватывает большую часть API Twitter.

Отсутствует только метод настройки изображения профиля и несколько других параметров профиля. В остальном это довольно полно. Обновления статуса, сроки, дружба, списки, поиск, потоковая передача и т. Д.

Это также быстро и надежно. Twitter может быть нестабильным, и у JTwitter есть обходные пути и информативные исключения, чтобы облегчить вашу жизнь.

Как основной разработчик JTwitter, я весьма пристрастен! Но отзывы разработчиков, использующих JTwitter, также очень положительные.

10
ответ дан 24 November 2019 в 16:27
поделиться

Также существует TweetStream4J , который является привязкой Java для API потоковой передачи Twitter. Это довольно просто, и в отличие от того, когда я использовал его в прошлый раз, автор обновил его, включив в него файл pom.xml, чтобы вы могли его собрать. Это довольно просто и быстро, когда я последний раз использовал его (из Scala).

0
ответ дан 24 November 2019 в 16:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: