Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-06-2014
MaxiDucoli MaxiDucoli is offline
Miembro
 
Registrado: feb 2006
Posts: 134
Poder: 19
MaxiDucoli Va por buen camino
PRoblema con datos obtenidos de graph.facebook.com

Hola, me surge el siguiente problema y hace horas que no puedo solucionarlo.

Estoy tratando de obtener mi Facebook ID y mi email desde Graph de Facebook, eso lo logro hacer.
Pero me surge un PROBLEMON!!

No me da mi verdadero ID, me da otro numero y mi email me lo da, pero no pone una @, si no que pone esto:

maxiducoli\U0040gmail.com en vez de maxiducoli@gmail.com.

Este es el código que me devuelve:

{
"id": "803866672966533",
"email": "maxiducoli\u0040gamil.com"
}

Mi verdadero FacebookID es: 100000296243756

y mi mail es: maxiducoli@gmail.com

Alguien sabe por que puede suceder esto???
Yo creo que es problema de compatibilidad de codificacion o algo asi:
Estoy bajando todo con un TIdhttp con GET y lo estoy guardando en un TStringStream.Create('', TEncode.UTF8)

Alguno se le ocurre alguna idea de por qué????

Muchas gracias.
Responder Con Cita
  #2  
Antiguo 10-06-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Está claro que el "\u0040" esla @, ya que ese es el número en hexadecimal de ese carácter. Basta con realizar una sustitución para obtener la dirección correcta. El problema es el identificador que estás obteniendo.

No te puedo dar muchos más detalles, porque desconozco qué es esto de "obtener datos mediante graph.facebook.com" y das pocos detalles de este sistema.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 10-06-2014
MaxiDucoli MaxiDucoli is offline
Miembro
 
Registrado: feb 2006
Posts: 134
Poder: 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
  #4  
Antiguo 12-06-2014
chaosego chaosego is offline
Miembro
 
Registrado: ene 2007
Posts: 31
Poder: 0
chaosego Va por buen camino
¿Has visto el código de acceso a facebbok que hay en el ejemplo de Delphi XE5 / XE6? (Carpeta \Samples\Delphi\RESTDemo). Explica o mejor dicho, da las bases para el acceso a la api graph de facebook.

Respescto al ID que te devuelve, pruebalo en el graph explorer de Facebook (https://developers.facebook.com/tools/explorer), y comprueba el número que va a continuación una vez que hagas login y estés en la página del graph explorer, en mi caso, obtengo https://dev....ok.com/tools/explorer/1456xxxxxxxx/ que no es el equivalente a mi ID, la cual sale en el explorador.
He probado a localizarte en el Graph Explorercon el ID que te devuelve (803866672966533) y da error, sin embargo con el tuyo (100000296243756) si puedo ver tus datos.

Haz pruebas con el ejemplo que te he citado arriba, a ver si el poblema de ID se repite, o quizá, ahora que pienso, es posible que te esté devolviendo un identificador de otra cuenta/página tuya que tuvieras asociada, ten en cuenta que si tienes varias páginas de Facebook bajo una misma cuenta de correo, te volverá el ID de la principal, aunque no recuerdo si es de la principal o de la que tienes activa en ese momento.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Guardar en una variable el contenido de 100000 registros obtenidos con ZeosLib noob Conexión con bases de datos 7 20-04-2009 09:14:50
Eliminar caracteres extraños obtenidos por puerto serie Sr.Scorpion Varios 34 22-10-2008 19:57:22
Distorsion de datos obtenidos de una consulta richisaurio MS SQL Server 2 14-08-2008 18:57:46
obtener campo de varios obtenidos de sql mediante un cursor jesusvp SQL 5 16-07-2007 20:35:57
Graph Meter (histograma) cadena Gráficos 0 01-12-2004 19:29:23


La franja horaria es GMT +2. Ahora son las 20:52:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi