Después de hacer TPlus esto ha sido coser y cantar. Aunque la validación es algo diferente, con este trozo de código se puede obtener la cookie (cookiefb) que nos permite interactuar con Facebook. Una vez tenemos la cookie sólo hay que usarla en cada llamada (GET o POST) y podremos naegar sin problemas.private void ConectarConFacebook() { String miUser = "mail@dominio.com"; String miPass = "casimiro"; // Obtenemos la cookie inicial al entrar en la página de validación de usuario String cookie = CargarHome(); // Extraemos la clave 'lsd' de la cookie String lsd = ExtraerCookie(cookie, "lsd"); // Con la cookie anterior validamos y obtenemos la nueva cookie cookie = Conectar(miUser, miPass, cookie); if (cookie == null) // ERROR AL CONECTAR else { // Extraemos los datos necesario para crear la cookie que necesitamos para navegar String c_user = ExtraerCookie(cookie, "c_user"); if (c_user == null) // ERROR AL CONECTAR String datr = ExtraerCookie(cookie, "datr"); String lxe = ExtraerCookie(cookie, "lxe"); String lxs = ExtraerCookie(cookie, "lxs"); String xs = ExtraerCookie(cookie, "xs"); String lo = ExtraerCookie(cookie, "lo"); String sct = ExtraerCookie(cookie, "sct"); usergp = c_user; // Creamos la nueva cookie cookiefb = "lsd=" + lsd + ";"; cookiefb += "c_user=" + c_user + ";"; cookiefb += "datr=" + datr + ";"; cookiefb += "lxe=" + lxe + ";"; cookiefb += "lxs=" + lxs + ";"; cookiefb += "xs=" + xs + ";"; cookiefb += "lo=" + lo + ";"; cookiefb += "sct=" + sct + ";"; }Función CargarHome:
private string Home() { HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.facebook.com/"); req.Method = "GET"; req.UserAgent = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1"; req.ContentType = "application/x-www-form-urlencoded"; try { HttpWebResponse response = (HttpWebResponse)req.GetResponse(); return response.GetResponseHeader("Set-Cookie"); } catch { return null; } }Función Conectar:
private string Conectar(String user, String pass, String cookie) { System.Net.ServicePointManager.Expect100Continue = false; Uri address = new Uri("https://login.facebook.com/login.php?login_attempt=1"); HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(address); req.AllowAutoRedirect = false; req.ProtocolVersion = HttpVersion.Version11; req.Method = "POST"; req.UserAgent = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1"; req.ContentType = "application/x-www-form-urlencoded"; req.Headers.Add("Cookie", cookie); byte[] byteData = UTF8Encoding.UTF8.GetBytes("locale=es_ES&email=" + user + "&pass=" + pass); req.ContentLength = byteData.Length; try { Stream postStream = req.GetRequestStream(); postStream.Write(byteData, 0, byteData.Length); postStream.Close(); } catch { } try { HttpWebResponse response = (HttpWebResponse)req.GetResponse(); cookie = response.GetResponseHeader("Set-Cookie"); return cookie; } catch { } return null; }Función ExtraerCookie:
private string ExtraerCookie(String cookie, String clave) { clave += "="; string[] datos1 = cookie.Split(';'); foreach (string dato1 in datos1) { string[] datos2 = dato1.Split(','); foreach (string dato2 in datos2) { if (dato2.StartsWith(clave)) return dato2.Replace(clave, ""); } } return null; }




#1 by pks on 28 julio 2010 - 20:31 pm
Citar
Tu codigo no me funciona ,, ;s
#2 by Pepelux on 28 julio 2010 - 21:30 pm
Citar
Sí que funciona. De hecho yo lo estoy usando aquí: http://blog.pepelux.org/2010/07/24/guerra-de-pandillas-en-facebook/
Tal vez si me dices qué error te da, pueda ayudarte.
#3 by pks on 28 julio 2010 - 22:16 pm
Citar
tienes por casualidad algún msn …. lo que pasa es que quiero hacer algo en c# para cambiar mi estado en facebook … probe pero no me funciono …
mi msn es pks@cabrones.cl porfavor…
#4 by Pepelux on 29 julio 2010 - 17:45 pm
Citar
mándame un mail mejor porque no suelo entrar al msn
#5 by redchain on 16 mayo 2011 - 9:02 am
Citar
el codigo esta escrito en php cierto?
#6 by Pepelux on 16 mayo 2011 - 9:55 am
Citar
es C#
#7 by wGD on 26 junio 2011 - 9:42 am
Citar
Una pregunta, si yo quiero cambiar mi estado del face, puedo hacerlo usando este codigo?
#8 by Pepelux on 26 junio 2011 - 16:20 pm
Citar
Eso es una muestra de cómo realizar una conexión, que es la base de todo. Luego analizando datos y programando, podrás hacer cualquier cosa.
#9 by wGD on 26 junio 2011 - 23:01 pm
Citar
Gracias, ya pude hacerlo. Viendo un poco la seccion developer de Facebook me di cuenta como era. Se puede hacer TODO
Saludos.
Pase el codigo de la conexion a vb .NET, si lo quieres no tengo problema en pasarlo.
#10 by Snowy on 24 agosto 2011 - 16:10 pm
Citar
Hola, Si me pudieras pasar el código te lo agradecería
#11 by Pepelux on 24 agosto 2011 - 19:47 pm
Citar
El código? pero si está escrito en el post
#12 by Snowy on 25 agosto 2011 - 8:22 am
Citar
Jajaja, ya, pero me refiero para luego usar la cookie en la petición de una web de feisbuk, para acceder, por ejemplo, al contenido de un grupo
#13 by Snowy on 25 agosto 2011 - 8:23 am
Citar
Vamos, si tienes algún ejemplillo por ahí me vendría de perlas!
Gracias por adelantado
#14 by Pepelux on 25 agosto 2011 - 8:35 am
Citar
Lo único que tienes que hacer es un GET de la página quieras pasando en las cabeceras la Cookie que obtienes con la función de arriba. Si lo difícil ya está hecho
#15 by Snowy on 25 agosto 2011 - 9:30 am
Citar
Cierto, tenía mal puestos un par de {} y por eso no me iba…
Gracias por todo, funciona genial