FaceBook Log In and Status Update in Netbin in java without Facebook API

package fb;

import java.net.MalformedURLException;

/**

 *

 * @author sharma */

public class login {

    

    public static void main (String[] args)

    {

        try

        {

            BasicApi fb = new BasicApi ("NAME@hotmail.com", "781899");

                

        }

        catch (MalformedURLException e)

        {

            e.printStackTrace();

        }

        catch (Exception e)

        {

        //    e.printStackTrace();

        }



    }



}




***********************************************************************************
package fb;



import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.CookieHandler;

import java.net.CookieManager;

import java.net.CookieStore;

import java.net.HttpCookie;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLConnection;

import java.net.URLEncoder;

import java.net.UnknownServiceException;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.StringTokenizer;

import java.util.logging.Level;

import java.util.logging.Logger;



import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;

import org.jsoup.nodes.Element;

import org.jsoup.select.Elements;





/**

 *

 * @author sharma

 */

public class BasicApi 

{



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



    private static final String SET_COOKIE = "Set-Cookie";

    private static final String COOKIE_VALUE_DELIMITER = ";";

    private static final String SET_COOKIE_SEPARATOR="; ";

    private static final String COOKIE = "Cookie";

    private static final char NAME_VALUE_SEPARATOR = '=';

        private String FB_BASE = new String ("http://www.facebook.com");

    private String FB_LOGIN_PAGE = new String ("/login.php");

    private String FB_HOME_PAGE = new String ("/home.php");

    private String FB_CHAT_WIN = new String ("/presence/popout.php");

    private String USER_AGENT = new String ("Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.2");

    private String FB_POST_FORM = new String ("<input type=\"hidden\" id=\"post_form_id\"name=\"post_form_id\" value=");

    

    private String user = null;                

    private String post_form_id = null;        

    private String channel = null;            

    private int seq = -1;                    

    private URL basePage = null;            

    private CookieHandler cm = null;

        OutputStreamWriter out = null;

    URL login = null;

    HttpURLConnection loginConn = null;

    

    public BasicApi (String uname, String password) throws MalformedURLException

    {

            user = new String ("");

            post_form_id = new String ("");

            channel = new String ("");

            basePage = new URL (FB_BASE);

            initCookieManager();

        

            this.login(uname, password);

            this.getInfos();

            this.MyupdateStatus("this assignment is done");

        

    }

    

    public void login (String uname, String password)

    {

        try

        {    

            

            System.out.println("--------------LOGIN:----------------");

            

            

            login = new URL (basePage, FB_LOGIN_PAGE);

            HttpURLConnection.setFollowRedirects(false);            //Sets whether HTTP redirects should be automatically followed by this class

            loginConn = openConnection(login);

            System.out.println ("Response Code :" + loginConn.getResponseCode());       // Gets the status code from an HTTP response message

            

            loginConn.getContent();

            loginConn.disconnect();

            

            printCookies(loginConn);

            loginConn = openConnection(login);

            loginConn.setRequestMethod("POST");                         //Get the request method

            loginConn.setDoOutput(true);                                // A URL connection can be used for input and/or output. Set the DoOutput flag to true if

                                            // you intend to use the URL connection for output, false if not. The default is false.



                        out = new OutputStreamWriter(loginConn.getOutputStream());  //  Returns an output stream that writes to this connection

            out.write("email=" + uname + "&pass=" + password);

            out.flush();                                                // Flush the stream.

            out.close();

            

            loginConn.disconnect();

            

            System.out.println ("Response Code :" + loginConn.getResponseCode());    //Gets the status code from an HTTP response message. For example, in the case of the following status lines:  HTTP/1.0 200 OK  HTTP/1.0 401 Unauthorized

             System.out.println ("Request Method :" +loginConn.getRequestMethod());    //Get the request method.

            

            printCookies(loginConn);

            System.out.println("-------------------END LOGIN----------------------");

                        

        }

        catch (MalformedURLException e)

        {

            System.out.println ("error: " + e.getCause());

        }

        catch (UnknownServiceException e)

        {

            System.out.println ("Error: ");

        }

        catch (IOException e)

        {

            System.out.println ("Error: ");

            e.printStackTrace();

        }

    }

    

    

    public void getInfos ()

    {

        try

        {

            System.out.println ("------------------------GET INFOS-------------------");

            URL infopage = null;

            HttpURLConnection infoConn = null;

            BufferedReader read = null;

            String line = null;

            

            int pfStart = -1, pfEnd = -1;

            CookieStore cs = ((CookieManager)cm).getCookieStore();

            

            

            for (HttpCookie c : cs.getCookies()){

                if (c.getName().equals("c_user")){

                    user += c.getValue();

                    break;

                }    

            }

            

            

            if (this.user.equals(""))   System.out.println("Login ");

            else    System.out.println("user id: " + user);

            

            infopage = new URL(basePage, FB_CHAT_WIN);

            infoConn = openConnection(infopage);

            read = new BufferedReader(new InputStreamReader (infoConn.getInputStream()));



            while ((line = read.readLine()) != null){



                if (line.startsWith(FB_POST_FORM)){



                    pfStart = line.indexOf("value=");

                    pfStart = line.indexOf("\"", pfStart);

                    pfStart ++;

                    pfEnd = line.indexOf("\"", pfStart);

                    post_form_id = line.substring(pfStart, pfEnd);

                }

                            

            }



            

            if (post_form_id == null)       System.out.println("impossibile post_form_id");

            else                            System.out.println("post form: " + post_form_id);

            

            System.out.println ("----------------END GET INFOS--------------");

            

        }

        catch (MalformedURLException e)

        {

            System.out.println ("error: " + e.getCause());

        }

        catch (IOException e)

        {

            System.out.println ("errore ");

            e.printStackTrace();

        }

    }

    void getCookies(URLConnection fbConn)

    {

        String headerName;

        for(int i=1;(headerName = fbConn.getHeaderFieldKey(i))!=null;i++)

        {

            if(headerName.equalsIgnoreCase(SET_COOKIE))

            {

                StringTokenizer tokens = new StringTokenizer(fbConn.getHeaderField(i),COOKIE_VALUE_DELIMITER);

                while(tokens.hasMoreTokens())

                {

                    String token=tokens.nextToken();

                    try

                    {

                        String key = token.substring(0,token.indexOf(NAME_VALUE_SEPARATOR));

                        key = key.replaceAll(" ","");

                        if(!key.equalsIgnoreCase("expires") && !key.equalsIgnoreCase("path") && !key.equalsIgnoreCase("domain"))

                        {

                            String value=token.substring(token.indexOf(NAME_VALUE_SEPARATOR)+1,token.length());

                            cookies.put(key, value);

                        }

                    }

                    catch(Exception e){}

                }

            }

        }

    }



    void setCookies(URLConnection fbConn)

    {

        StringBuffer cookieNames=new StringBuffer();

        Iterator it=cookies.keySet().iterator();

        while(it.hasNext())

        {

            String key=(String) it.next();

            String value=cookies.get(key);

            cookieNames.append(key);

            cookieNames.append("=");

            cookieNames.append(value);



            if(it.hasNext())

            {

                cookieNames.append(SET_COOKIE_SEPARATOR);

            }

        }

        //System.out.println(cookieNames.toString());



        fbConn.setRequestProperty(COOKIE,cookieNames.toString());

    }



    void viewCookiews()

    {

        System.out.println("Cookie Size : " +cookies.size());

        Iterator it=cookies.keySet().iterator();

        while(it.hasNext())

        {

            String key=(String) it.next();

            String value=cookies.get(key);

            System.out.println(key + " : "+value);

        }

    }



    String MygetPageContent(URLConnection fbConn)

    {

        String contents = "";

        BufferedReader in = null;



        try

        {

            in = new BufferedReader(new InputStreamReader(fbConn.getInputStream()));

            String inputLine;



            while ((inputLine = in.readLine()) != null)

            {

                contents += inputLine + "\r\n";

            }

            in.close();

        }

        catch (IOException ex)

        {

            ex.printStackTrace();

            Logger.getLogger(BasicApi.class.getName()).log(Level.SEVERE, null, ex);

        }



        finally

        {

            try

            {

                in.close();

            }

            catch (IOException ex)

            {

                ex.printStackTrace();

                Logger.getLogger(BasicApi.class.getName()).log(Level.SEVERE, null, ex);

            }

        }

        return contents;

    }

    Map<String,String> MygetStatusUpdateParamiters(String html)

    {

        Map<String,String> paramiters=new HashMap<String, String>();



        Document doc = (Document) Jsoup.parse(html);

        Element dom = doc.getElementById("composer_form");

        Elements inputs=dom.getElementsByTag("input");

        for(int i=0;i<inputs.size();i++)

        {

            System.out.println(inputs.get(i).attr("name")+" : "+inputs.get(i).attr("value"));

            paramiters.put(inputs.get(i).attr("name"),inputs.get(i).attr("value"));

        }



        return paramiters;

    }

     void MyupdateStatus(String status)

    {

        URLConnection fbStatusCon = null;

        URL fbStatusURL = null;

        OutputStreamWriter wr = null;



        try {



            URL url = new URL("http://m.facebook.com/profile.php?refid=7");

          //  URL url = new URL("http://www.facebook.com/profile.php?id=100001616376884");



            URLConnection con = url.openConnection();

            setCookies(con);

            con.connect();

            getCookies(con);

            String profilePageContent=MygetPageContent(con);

            //System.out.println(getPageContent(con));



            System.out.println("view Profile page successfull");



            fbStatusURL = new URL("http://www.facebook.com/ajax/updatestatus.php");

            fbStatusCon = fbStatusURL.openConnection();

            setCookies(fbStatusCon);



            fbStatusCon.setDoOutput(true);

            wr = new OutputStreamWriter(fbStatusCon.getOutputStream());

            Map<String , String> parameters=new HashMap<String,String>();



            parameters=MygetStatusUpdateParamiters(profilePageContent);

            Iterator it=parameters.keySet().iterator();



            String data="status="+URLEncoder.encode(status, "UTF-8");

            while(it.hasNext())

            {

                String key=(String) it.next();

                String value=parameters.get(key);



                data+="&"+key+"="+URLEncoder.encode(value, "UTF-8");

            }



            /*String post_form_id = "80a8de91bf3c0e413e96e5b964ae4753";

            String fb_dtsg = "1pghv";

            String update = "Share";

            String charset_test = "€,´,€,´,?,?,?";



            String data="post_form_id="+URLEncoder.encode(post_form_id, "UTF-8");

            data+="&fb_dtsg="+URLEncoder.encode(fb_dtsg, "UTF-8");

            data+="&status="+URLEncoder.encode(status, "UTF-8");

            data+="&update="+URLEncoder.encode(update, "UTF-8");

            data+="&charset_test="+URLEncoder.encode(charset_test, "UTF-8");*/



            wr.write(data);

            wr.flush();

            wr.close();



            fbStatusCon.connect();

            getCookies(fbStatusCon);

            //System.out.println("Contents : \n"+getPageContent(fbStatusCon));

            System.out.println("status Update successfull");

            viewCookiews();

        } catch (IOException ex) {

        }

    }

    

    public void send (String to, String text)

    {

        

        

    }

    

    private void initCookieManager ()

    {

        cm = new MyCookieManager();

        java.net.CookieHandler.setDefault(cm);        

    }



    

    private HttpURLConnection openConnection (URL u) throws IOException

    {

        HttpURLConnection conn = (HttpURLConnection)u.openConnection();

        setUserAgent(conn);

        return conn;    

    }

    

    

    private void setUserAgent (URLConnection u)

    {

        u.setRequestProperty("User-Agent", USER_AGENT);    

    }

    

    

    private void printCookies (HttpURLConnection conn)

    {

        CookieStore cs = ((CookieManager)cm).getCookieStore();

        

        int i = 0;

        System.out.println ("----------Cookies--------------");

        for (i = 0; i < 99; i++)

        {

            String s = conn.getHeaderFieldKey(i);

            

            if (s != null && s.equals("Set-Cookie"))

            {

                System.out.println ("Set-Cookie: " + conn.getHeaderField(i));

            }

                

            

        }

        

        System.out.println("-------------------------------");

        

        for (HttpCookie c : cs.getCookies())

            System.out.println (c.toString());

        

        System.out.println("-------------------------------------------");

    }

    

}





**********************************************************************************
package fb;

import java.io.IOException;

import java.net.*;

import java.util.*;



/**

 * * @author sharma

*

 */

public class MyCookieManager extends CookieManager

{



    public MyCookieManager ()

    {

        super();    

    }

    

    public MyCookieManager(CookieStore store,

            CookiePolicy cookiePolicy)

    {

        super (store, cookiePolicy);

    }

    

     @Override

    public void put(URI uri, Map<String, List<String>> responseHeaders)

                                                        throws IOException

    {



        Map <String, List<String>> newHeader = 

                                    new HashMap <String, List<String>>();

        

        List <String> temp = null, newList = new LinkedList <String>();

        



        temp = responseHeaders.get("Set-Cookie");

        



        if (temp != null)

        {



            for (String s : temp)

                newList.add(s.replace("; httponly", ""));

            



            newHeader.put("Set-Cookie", newList);

                    newList = new LinkedList <String>();

        }

        

        

        temp = responseHeaders.get("Set-Cookie2");

        

        if (temp != null)

        {

            for (String s : temp)

                newList.add(s.replace("; httponly", ""));

            

            newHeader.put("Set-Cookie2", newList);

        }

        



        super.put(uri, newHeader);

    }

}






1 comments:

You done very well job. But status not update. please help....

Reply

Post a Comment