Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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
通过Jsoup Java Android登录Twitter_Java_Android_Twitter_Web Scraping_Jsoup - Fatal编程技术网

通过Jsoup Java Android登录Twitter

通过Jsoup Java Android登录Twitter,java,android,twitter,web-scraping,jsoup,Java,Android,Twitter,Web Scraping,Jsoup,我正在尝试使用Jsoup登录twitter,因为我想抓取我的推文并通过短信发送给我,我知道如何从HTML处理它们,我知道如何通过短信发送它们,我需要登录步骤中的帮助,我无法登录twitter 我尝试的是,在后台处理webview而不使用任何Ui注意:没有应用程序的Ui,但失败了,因为没有Ui无法处理它,我尝试使用以下代码登录Jsoup final String usernameKey = "session[username_or_email]"; final String passwordKey

我正在尝试使用Jsoup登录twitter,因为我想抓取我的推文并通过短信发送给我,我知道如何从HTML处理它们,我知道如何通过短信发送它们,我需要登录步骤中的帮助,我无法登录twitter 我尝试的是,在后台处理webview而不使用任何Ui注意:没有应用程序的Ui,但失败了,因为没有Ui无法处理它,我尝试使用以下代码登录Jsoup

final String usernameKey = "session[username_or_email]";
final String passwordKey = "session[password]";
final String loginFormUrl= "https://mobile.twitter.com/login";
final String loginActionUrl = "https://mobile.twitter.com/sessions";

HashMap<String, String> cookies = new HashMap<>();  
HashMap<String, String> formData = new HashMap<>();  

Connection.Response loginForm = Jsoup.connect(loginFormUrl)
                    .userAgent(userAgent)
                    .method(Connection.Method.GET)
                    .execute();

cookies.putAll(loginForm.cookies());

doc = Jsoup.connect(loginActionUrl)
    .data(usernameKey, username)
    .data(passwordKey, password)
    .cookies(cookies)
    .method(Connection.Method.POST)
    .userAgent(userAgent)
    .post();

                /*
                 doc = Jsoup.connect(twitterHomePage)
                 .userAgent(userAgent)
                 .cookies(loggedIn.cookies())
                 .timeout(30 * 1000)
                 .get();
                 */
Log.d(TAG, doc.html());

但我没有登录,只获得Twitter登录页面HTML

注意:Twitter在通过此方法仅登录2次后就阻止了我的帐户,请自行承担风险

这是我如何让它工作的

    Map<String, String> cookies;
Map<String, String> data = new HashMap<String, String>();

Connection.Response loginPageRes = Jsoup.connect(loginFormUrl)
    .userAgent(userAgent)
    .referrer(refferer)
    .timeout(30 * 1000)
    .method(Connection.Method.GET)
    .followRedirects(true)
    .execute();

cookies = loginPageRes.cookies();

data.put(usernameKey, username);
data.put(passwordKey, password);
data.put("remember_me", "1");
data.put("wfa", "1");
data.put("redirect_after_login", "/");
data.put("commit", " Log in ");
data.put("authenticity_token", loginPageRes.parse().select("input[name=authenticity_token]").val());

Connection.Response resPostLogin = Jsoup.connect(loginActionUrl)
    .method(Connection.Method.POST)
    .userAgent(userAgent)
    .referrer(loginFormUrl)
    .data(data)
    .cookies(cookies)
    .timeout(30 * 1000)
    .followRedirects(true)
    .execute();

doc = resPostLogin.parse();
    String timelineText = doc.text();

注意:Twitter在使用此方法仅登录2次后就阻止了我的帐户,请自行承担风险

这是我如何让它工作的

    Map<String, String> cookies;
Map<String, String> data = new HashMap<String, String>();

Connection.Response loginPageRes = Jsoup.connect(loginFormUrl)
    .userAgent(userAgent)
    .referrer(refferer)
    .timeout(30 * 1000)
    .method(Connection.Method.GET)
    .followRedirects(true)
    .execute();

cookies = loginPageRes.cookies();

data.put(usernameKey, username);
data.put(passwordKey, password);
data.put("remember_me", "1");
data.put("wfa", "1");
data.put("redirect_after_login", "/");
data.put("commit", " Log in ");
data.put("authenticity_token", loginPageRes.parse().select("input[name=authenticity_token]").val());

Connection.Response resPostLogin = Jsoup.connect(loginActionUrl)
    .method(Connection.Method.POST)
    .userAgent(userAgent)
    .referrer(loginFormUrl)
    .data(data)
    .cookies(cookies)
    .timeout(30 * 1000)
    .followRedirects(true)
    .execute();

doc = resPostLogin.parse();
    String timelineText = doc.text();

我不想通过复制twitter api页面上的代码来重新发明轮子,所以我将只链接如何登录:


对于阅读tweet和其他功能:

我不想通过复制twitter api页面上的代码来重新发明轮子,所以我只需链接how-to进行登录:


对于阅读推文和其他功能:

你有什么理由不想使用高效完成这项工作的twitter API吗?因为我认为它可以让我的应用程序保持轻量级,但twitter一次又一次阻止我使用jsoup登录我的帐户,我想,现在,我必须使用twitter API,你能给我一个如何使用twitter API的链接吗?你有什么理由不想使用twitter API来有效地完成这项工作吗?因为我认为它可以让我的应用程序保持较小的大小,但twitter一次又一次地阻止我使用jsoup登录我的帐户,我想,现在,我必须使用twitter API,你能给我一个如何使用twitter API的链接吗?我不是一个专业的开发人员,所以我不知道如何在我的UI较少的应用程序中使用这个API你不需要是一个专业的开发人员就可以使用这个API。仅供参考,它可以在没有UI的情况下工作。这是回答您问题的推荐方式。我不是专业开发人员,因此我不知道如何将此api与我的无UI应用程序一起使用您不需要是专业开发人员就可以使用此api。仅供参考,它可以在没有UI的情况下工作。这是回答您问题的推荐方式。