2017-10-15 193 views
0

我想使用Jsoup登錄到Twitter,因爲我想刮我的推文,並通過短信發送給我,我知道如何處理它們從HTML,我知道如何通過發送它們通過短信,我需要幫助登錄步驟,我無法登錄到twitter 我試過的是,在後臺處理webview(沒有任何用戶界面)(注意:沒有應用程序的用戶界面),但失敗了,因爲它可以「T在不UI處理,與Jsoup我嘗試使用此代碼推特通過Jsoup Java登錄Android

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

+0

是否有任何理由,你爲什麼不想使用Twitter API做這件工作效率LY? – codeFreak

+0

因爲我認爲它會讓我的應用程序的大小保持不變,但Twitter屢次阻止我使用jsoup一次又一次地登錄到我的帳戶,現在,我必須使用twitter API,請給我一個鏈接如何使用twitter API API? –

回答

1

注: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(); 
1

我不希望從Twitter的API頁面複製代碼推倒重來,所以我將只是鏈接的如何,爲登錄https://dev.twitter.com/twitterkit/android/log-in-with-twitter

對於閱讀鳴叫和其他功能:https://dev.twitter.com/twitterkit/android/access-rest-api

+0

我不是一個專業開發人員,所以我沒有得到它,如何使用這個API與我的用戶界面較少的應用程序 –

+0

你不需要成爲一個「專業開發人員」使用API​​。僅供參考,它可以在沒有UI的情況下工作。這是解決您的問題的推薦方式。 – codeFreak