2013-12-23 55 views
4

我有兩個EditText(id,密碼)和一個按鈕(登錄)。 當我點擊按鈕我想登錄FaceBook並打開網站。 但我不能看已登錄的網站。Android如何使用jsoup自動登錄FB

這是我的代碼。

public class MainActivity extends Activity { 

    EditText id; 
    EditText password; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     id = (EditText) findViewById(R.id.editText1); 
     password = (EditText) findViewById(R.id.editText2); 
     Button logIn = (Button) findViewById(R.id.button1); 

     logIn.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       Login(); 
      } 
     }); 

    } 

    public void Login(){ 
     System.out.println("id:" + id.getText().toString()); 
     System.out.println("password:" + password.getText().toString()); 


     try { 
       Connection.Response res = Jsoup.connect("https://www.facebook.com/login.php?login_attempt=1") 
          .data("email", id.getText().toString()) 
          .data("pass", password.getText().toString())        
          .method(Method.POST) 
          .timeout(60000)//1 min 
          .execute(); 

        Map<String, String> loginCookies = res.cookies(); 

        Document doc = Jsoup.connect("https://www.facebook.com") 
         .cookies(loginCookies) 
         .get(); 

        System.out.println(doc.text().toString()); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

     Uri uri = Uri.parse("https://www.facebook.com"); 
     Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
     startActivity(intent); 
    } 
} 
+3

您正在用JSoup登錄打開FB會話。但是,如果您不將返回的cookie傳送給意圖(這樣FB認爲這是一個新的未經驗證的會話),這是沒用的。請參閱http://stackoverflow.com/questions/3717236/pass-cookie-to-browser-via-intent –

回答

0

刮Facebook頁面是對他們的Terms of Service和一個很好的方式被禁止。然而,完全沒有必要,因爲它們提供了極好的API

+0

請您引用服務條款中文章的相關部分,說明這一點? – Stephan