Ottieni il campo del nome utente in Facebook Graph API 2.0

La “vecchia” API del grafico di Facebook aveva un campo “username” che poteva essere usato per creare un URL di profilo leggibile. Ad esempio, il mio nome utente è “sebastian.trug” che risulta in un URL del profilo di Facebook http://www.facebook.com/sebastian.trug .

Con Graph API 2.0, Facebook ha rimosso il campo “nome utente” dai dati utente recuperati da “/ me”.

C’è un modo per ottenere questi dati tramite l’API 2.0 o il “nome utente” viene ora trattato come un campo deprecato?

Facebook ha eliminato il nome utente perché il nome utente è un modo per inviare e-mail tramite Facebook.

Ad esempio, dato l’url http://www.facebook.com/sebastian.trug

l’email di Facebook corrispondente sarebbe [email protected]

che, se inviato via email, verrebbe ricevuto direttamente dai messages (se l’impostazione del message è impostata su public ), altrimenti other casella di posta in arrivo.

Il campo del username utente dell’object User è stato rimosso e non esiste in Graph API v2.0. Nella v2.0 dell’API non c’è modo di ottenere il nome utente FB di un utente.

Fonte: https://developers.facebook.com/docs/apps/changelog#v2_0_graph_api

“/ me / username non è più disponibile.”

@Simon Cross – Essendo deprecato è documentato, sì. Questa non è la domanda, la domanda è come ottenerla e, inoltre, mi chiedo perché Facebook abbia fatto una scelta così terribile e abbia rimosso il nome utente. Centinaia di applicazioni che si basano sul nome utente per creare account sul proprio servizio verranno interrotte.

@ user3596238 – Puoi restare fedele all’API V.1, che sarà disponibile fino alla fine di aprile 2015, di gran lunga la soluzione migliore, ma Facebook potrebbe essere comunque irrilevante. https://developers.facebook.com/docs/apps/changelog

Soluzione: chiedere all’utente un nome utente oltre al login Facebook effettivo? – A mio parere, ciò rende completamente inutile il login di Facebook.

Mentre l’SDK 2.0 non fornirà più il campo del username , verrà facilmente raschiato se si ha il numero identificativo dell’utente (che probabilmente userete per accedere comunque al grafico).

L’url facebook.com/ reindirizzerà a facebook.com/ , che può quindi essere estratto come preferisci.

il mio approccio è rottamare il nome utente usando nokogiri attraverso il profilo utente. un po ‘come questo (in ruby):

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

Uno dei modi potrebbe essere accedere a facebook.com/{userid} utilizzando cURL e quindi seguire il reindirizzamento.

La pagina risponde a facebook.com/{username}

Ispirato dalla risposta di @RifkiFauzi, ecco la mia soluzione in puro Python

 #get html of a page via pure python ref. https://stackoverflow.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://stackoverflow.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) 
 https://graph.facebook.com/?id=100005908663675 

Basta cambiare id a qualunque cosa.