Tengo una aplicación de escritorio de Facebook y estoy usando Graph API . Puedo obtener el token de acceso, pero después de eso, no sé cómo obtener la identificación del usuario.
Mi flujo es así:
Envío al usuario a https://graph.facebook.com/oauth/authorize con todos los permisos extendidos requeridos.
En mi página de redireccionamiento obtengo el código de Facebook.
Luego realizo una solicitud HTTP a graph.facebook.com/oauth/access_token con mi clave API y obtengo el token de acceso en la respuesta.
A partir de ese momento no puedo obtener la identificación de usuario.
¿Cómo se puede solucionar este problema?
facebook
facebook-graph-api
Mohoch
fuente
fuente
https://graph.facebook.com/me?fields=id&access_token=xxxxxx
La forma mas facil es
luego obtendrá la respuesta json que contiene solo el ID de usuario.
fuente
El token de acceso a Facebook también se ve similar "1249203702 | 2.h1MTNeLqcLqw __. 86400.129394400-605430316 | -WE1iH_CV-afTgyhDPc"
si extrae la parte del medio usando | para dividir tienes
2.h1MTNeLqcLqw __. 86400.129394400-605430316
luego dividir de nuevo por -
la última parte 605430316 es la identificación del usuario.
Aquí está el código C # para extraer la identificación de usuario del token de acceso:
public long ParseUserIdFromAccessToken(string accessToken) { Contract.Requires(!string.isNullOrEmpty(accessToken); /* * access_token: * 1249203702|2.h1MTNeLqcLqw__.86400.129394400-605430316|-WE1iH_CV-afTgyhDPc * |_______| * | * user id */ long userId = 0; var accessTokenParts = accessToken.Split('|'); if (accessTokenParts.Length == 3) { var idPart = accessTokenParts[1]; if (!string.IsNullOrEmpty(idPart)) { var index = idPart.LastIndexOf('-'); if (index >= 0) { string id = idPart.Substring(index + 1); if (!string.IsNullOrEmpty(id)) { return id; } } } } return null; }
ADVERTENCIA: La estructura del token de acceso no está documentada y es posible que no siempre se ajuste al patrón anterior. Úselo bajo su propio riesgo.
Actualización debido a cambios en Facebook. el método preferido para obtener el ID de usuario del token de acceso cifrado es el siguiente:
try { var fb = new FacebookClient(accessToken); var result = (IDictionary<string, object>)fb.Get("/me?fields=id"); return (string)result["id"]; } catch (FacebookOAuthException) { return null; }
fuente
Puede usar el siguiente código en onSuccess (LoginResult loginResult)
fuente
Solo tienes que presionar otra API Graph:
También le dará su identificación de correo electrónico y la identificación de usuario (para Facebook).
fuente
Con la API más reciente, aquí está el código que utilicé
fuente
en FacebookSDK v2.1 (no puedo verificar la versión anterior). Tenemos
Sin embargo, según el comentario en FacebookSDK
@discussion Es posible que esto no se complete para los comportamientos de inicio de sesión, como la cuenta del sistema iOS.
Por lo tanto, debe verificar si está disponible y luego si usarlo o llamar a la solicitud para obtener la identificación del usuario
fuente
Consulte esta respuesta , que describe cómo obtener una respuesta de identificación. Primero, necesitas crear un método para obtener datos:
Luego, simplemente use su método cuando lo desee, así:
fuente