PDA

Ver la Versión Completa : Conectar a Facebook


maycampana
01-06-2012, 16:54:33
Hola genios del club, quisiera saber si es posible conectarme a Facebook por ej. desde mi aplicación hecha en Delphi 6. Se puede hacer con algún componente Indy o cómo se puede hacer? Simplemente yo colocaría un botoncito que me abra el facebook. Muchas gracias por su ayuda. Saludos

maeyanes
01-06-2012, 17:05:33
Hola...

Para poner un botón que te "abra" Facebook, solo tendrías que hacer algo más o menos así:


procedure MyForm.btnFacebookClick(Sender: TObject);
begin
ShellExecute(Handle, nil, 'http://www.facebook.com', nil, nil, SW_SHOW)
end;


Ahora, si te quieres conectar a su API, ahí si tendrías que buscar en la documentación de Facebook sobre como hacerlo.


Saludos...

Chris
01-06-2012, 19:27:41
Ahora, si te quieres conectar a su API, ahí si tendrías que buscar en la documentación de Facebook sobre como hacerlo.

Facebook y muchos más servicios utilizan OAuth para darle autorización a aplicaciones de terceros a conectarse al servicio y trabajar en nombre de sus usuarios.

OAuth no es muy díficil de implementar. El inconveniente es que trabaja únicamente sobre HTTP y la autorización normalmente se concede por medio de una interfaz HTML. Ésto último hace un poco díficil su implementación en aplicaciones nativas.

Nunca he trabajado con OAuth y servicios que lo utilicen, pero básicamente el sistema funciona así:
Lo primero que tienes que hacer es registrar tu aplicación en Facebook. Cuando la registres, Facebook te dará una "clave secreta" y otra "llave pública". La última la utilizarás para pedir la autorización. Si la autorización es dada, Facebook remitirá al usuario a una URL proporcionada por tu aplicación. Ésta URL le llaman "callback request/function" haciendo apología de las clásicas Callback functions encotradas en muchas APIs nativas.

Al controlador de respuesta (callback request) se le proporcionará una llave de autenticación que debe ser guardada por tu aplicación. Usarás ésa llave para interactuar con el servicio en nombre del usuario que te halla dado esa autorización.

Cómo ya deberás imaginar, las llamadas a la API son por medio de HTTP. Todas las llamadas deben incluir tu llave de autorización y la clave secreta previamente dada al momento de registrar tu aplicación con el servicio.

Las peculiaridades de la API de facebook las puedes encontrar en https://developers.facebook.com

Saludos!

PD.: Siempre es recomendable utilizar direcciones seguras (HTTPS) para trabajar con la API. Estarás enviado información confidencial en cada llamada. Las llaves podrían ser robadas por medio de un sniffer y así un atacante puede actuar en nombre de tu aplicación y de tus usuarios.

maycampana
01-06-2012, 19:29:01
Hola Amigo, muchas gracias por tu ayuda, lo voy a probar, parece muy simple, espero que me funcione. Lo que quiero hacer es guardar con los datos personales de cada cliente su nombre en Facebook y desde mi aplicación conectarme por medio de un botón con el cliente seleccionado.

maycampana
01-06-2012, 19:34:37
A bueno, nada es tan fácil pero muchísimas gracias por la información. Antes estuve buscando por Internet y no encontré nada que me guiara, mil gracias.

maycampana
08-06-2012, 16:49:33
Gracias maeyanes, el ShellExecute funciona perfecto, lo he utilizado en otra oportunidad pero no me avivé que serviría para esto también. Ahora voy a ver si le puedo agregar al link el nombre de alguna persona en Facebook para ubicarlo directamente. Por ej.
Delphi [-]

begin
ShellExecute(handle, nil, 'http//www.facebook.com'+/dario.perez, nil,nil, SW_SHOW);
end;

tiene que ser con una variable Char no? Gracias

maeyanes
08-06-2012, 16:52:27
Hola...

Puedes concatenar la cadena:


var
Username: string;

begin
Username = 'dario.perez';
ShellExecute(Handle, nil, 'http//www.facebook.com/' + Username, nil, nil, SW_SHOW)
end;



Saludos...

Chris
08-06-2012, 17:07:31
Con tu permiso Maeyanes, permiteme hacerle una pequeña corrección a tu código:
var
fb_profile_url: string;
begin
fb_profile_url := 'http//www.facebook.com/dario.perez';
ShellExecute(Handle, nil, PChar(fb_profile_url), nil, nil, SW_SHOW);
end;

El problema que había es que ShellExecute espera un puntero a una cadena, y no puedes concatenar un puntero con una cadena de Delphi a cómo lo estabas haciendo. Es un detalle que en ocasiones se nos olvida, pero es molesto cuando el compilador llora por estas pequeñas cosas.

Saludos!

maeyanes
08-06-2012, 17:13:53
Hola...



El problema que había es que ShellExecute espera un puntero a una cadena, y no puedes concatenar un puntero con una cadena de Delphi a cómo lo estabas haciendo. Es un detalle que en ocasiones se nos olvida, pero es molesto cuando el compilador llora por estas pequeñas cosas.

Saludos!

y más cuando no tienes el compilador a mano para probarlo... jejeje



Saludos...

Chris
08-06-2012, 17:19:10
y más cuando no tienes el compilador a mano para probarlo... jejeje
Ése soy yoooo! :D

maycampana
12-06-2012, 20:12:47
Gracias Chris, tu código funciona perfectamente, como dice Maeyanes ya había probado y no se puede, da error de variables incompatibles, por eso pregunté si tenía que ser tipo PChar. Saludos

AlejandroCalica
05-01-2022, 19:08:13
si lo que yo quisiera es desde una app echa en delpbi es crear una publicacion con campor del formulario y que se carge como publicacion en facebook, se podria ? saben como