PDA

Ver la Versión Completa : PRoblema con datos obtenidos de graph.facebook.com


MaxiDucoli
10-06-2014, 05:59:02
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.

Neftali [Germán.Estévez]
10-06-2014, 09:55:21
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.

MaxiDucoli
10-06-2014, 23:39:03
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:

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"?????

chaosego
12-06-2014, 09:38:14
¿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.