tutorial example espaƱol facebook facebook-graph-api

example - pagination facebook graph api



Obtener campo de nombre de usuario en Facebook Graph API 2.0 (8)

La "antigua" API de Facebook Graph tenía un campo de "nombre de usuario" que podría usarse para crear una URL de perfil legible por humanos. Mi nombre de usuario, por ejemplo, es "sebastian.trug", que da como resultado una URL de perfil de Facebook http://www.facebook.com/sebastian.trug .

Con Graph API 2.0 Facebook ha eliminado el campo "nombre de usuario" de los datos de usuario como se obtiene de "/ me".

¿Hay alguna forma de obtener estos datos a través de la API 2.0 o el "nombre de usuario" ahora se trata como un campo obsoleto?


@Simon Cross: está en desuso, está documentado, sí. Esa no es la pregunta, la pregunta es cómo obtenerla y, además, me pregunto por qué Facebook ha tomado una decisión tan terrible y ha eliminado el nombre de usuario. Cientos de aplicaciones que dependen del nombre de usuario para crear cuentas en su servicio se romperán.

@ user3596238 - Puedes quedarte con la API V.1 que estará disponible hasta finales de abril de 2015, de lejos no es la mejor solución, pero Facebook podría ser irrelevante para entonces. https://developers.facebook.com/docs/apps/changelog

Solución: pregunte al usuario por un nombre de usuario además del inicio de sesión de Facebook. - En mi opinión, eso hace que el inicio de sesión de Facebook sea completamente inútil de todos modos.



Facebook se deshizo del nombre de usuario porque el nombre de usuario es una forma de enviar correos electrónicos a través de Facebook.

Por ejemplo, dada la URL http://www.facebook.com/sebastian.trug

el correo electrónico de Facebook correspondiente sería [email protected]

que, si se enviara por correo electrónico, se recibiría en los messages directamente (si la configuración del message se establece en public ), de lo contrario a la other bandeja de entrada.


Inspirada en la respuesta de @RifkiFauzi, esta es mi solución en Python puro

#get html of a page via pure python ref. https://.com/a/23565355/248616 import requests r = requests.get(''http://fb.com/%s'' % FB_USER_ID) #open profile page of the facebook user r.raise_for_status() html = r.content #search string with regex ref. https://.com/a/4667014/248616 import re # m = re.search(''meta http-equiv="refresh" content="0; URL=/([^?]+)/?'', html) m = re.search(''a class="profileLink" href="([^"]+)"'', html) href = m.group(1) #will be https://www.facebook.com/$FB_USER_NAME on 201705.24 username = href.split(''/'')[-1] print(href) print(username)


Si bien el SDK 2.0 no proporcionará el campo de username más tiempo, es bastante fácil de descifrar si tiene el número de identificación de usuario (que probablemente utilizará para acceder al gráfico de todos modos).

El URL facebook.com/<user id> se redirigirá a facebook.com/<username> , que luego se puede extraer de la forma que desee.


Una de las formas podría ser acceder a facebook.com/{userid} usando cURL y luego seguir el redireccionamiento.

La página se redirecciona a facebook.com/{username}


mi enfoque es eliminar el nombre de usuario usando nokogiri a través del perfil de usuario. un poco como esto (en ruby):

html = RestClient.get("http://facebook.com/123123xxx) doc = Nokogiri::HTML(html) username = doc.css(''head meta'')[1].attributes["content"].value


https://graph.facebook.com/?id=100005908663675

Simplemente cambie la identificación a lo que sea.