Ver Mensaje Individual
  #3  
Antiguo 10-06-2014
MaxiDucoli MaxiDucoli is offline
Miembro
 
Registrado: feb 2006
Posts: 134
Reputación: 19
MaxiDucoli Va por buen camino
@ en hexa

Hola.
La cosa es así:

Estoy "jugando" con las API para aprender a usarlas.

Ya aprendí a loguearme o en realidad a pedir el permiso desde mi aplicación para que los usuarios se lo puedan otorgar y poder leer sus datos de perfil, por ahora.

Uso un ShellExecute para lograrlo y un Twebbrowser.
En el ShellExecute que abra el link en el WebBrowser con lo siguiente:

'https://www.facebook.com/dialog/oauth?scope=' +
'user_about_me,' + 'public_profile' +
'&redirect_uri=http://preguntadosfreegifts.blogspot.com.ar&response_type=token&client_id=637808106295501'

Con eso logro que le pida al usuario que otorgue los permisos para leer sus datos, creo que de perfil publico y lo básico. Luego que me redireccione a la URL http://preguntadosfreegifts.blogspot.com.ar
Una vez redireccionado, hago que copie esa URL desde la propiedad URL del componente y la guardo en una variable.
Esa URL contiene el Access_Token que es el dato escencial para poder acceder a los datos de los usuarios en Facebook.

Una vez con el Access_Token extirpado a una variable, lo que quiero hacer es ahí si, obtener los datos del usuario con lo siguiente:

Código Delphi [-]
procedure TForm1.btngetdataClick(Sender: TObject);
var
apilogin : string;  // String para futuro uso
//  I: Integer;
datos : TStringStream;  // TStringStream para guardar los datos obtenidos del GET
s : String;  // Variable de cadena
i, posi, contar : integer; // variable de enteros
begin
datos := TStringStream.Create('',TEncoding.UTF8);  // Creo la variable y la cargo con nada y le digo que use la codificación UTF8
s := '';
contar := 0;
token := '';
//s := '';
faceid := '';   //  Variable Global String. Acá se cargaría el ID de Facebook
email := '';    //  Variable Global String. Acá de cargaría el email 
apilogin := '';
userid := '';
appsession := '';

token := BuscarEntre('access_token=','&expires_in',URL_ACCESS_TOKEN);   // Separo el TOKEN del resto de la URL anterior

if token <> '' then    // Si lo encuentra empieza la función----
begin

Idhttp1.Get('https://graph.facebook.com/v2.0/me?fields=id,email' +
             '&method=GET&format=json&access_token=' + token,datos);             //          Pido que haga un Request de los datos de ID y de email.
end;

if datos.dataString <> '' then
begin
email :=  BuscarEntre('{"email":"','","',datos.DataString);   // SEPARO EMAIL
faceid := BuscarEntre('"id":"','"}',datos.DataString);        //  SEPARO FACEBOOK_ID
end;
end;


Es algo así lo que quiero.
Pero el email me lo da así "raro" y el Facebook ID no es el mio o no es el que necesitaría para seguir. Me da otro FAcebook ID.
Sabrías por qué esos "errores"?????
Responder Con Cita