2014-05-04 9 views
33

Ho usato per ottenere facilmente il nome utente dell'utente nell'API 1.0, utilizzando /me e ottenendo la proprietà username dell'oggetto risposta.Come ottenere il nome utente dell'utente nella v2.0 o successiva dell'API grafico di Facebook

Ora sto ricevendo questo errore con API 2.0:

"(# 12) è deprecato nome utente per le versioni v2.0 e superiori"

L'unico modo che ho trovato per ottenere questo fino ad ora era usare FQL, ma ora sembra deprecato.

Qualcuno conosce un modo per aggirare questo? Grazie!

+0

possibile duplicato di [Ottieni campo nome utente in Facebook Graph API 2.0] (http://stackoverflow.com/questions/23428498/get-username-field-in-facebook-graph-api-2-0) – powtac

risposta

19

Non intendo essere inutile, ma sembra che l'accesso al nome utente sia stato rimosso dall'API, per quanto ne so. I luoghi in cui un'app potrebbe aver utilizzato il nome utente, ad esempio nelle vecchie finestre di dialogo condivise, non possono più farlo quando vengono utilizzati con l'API 2.0. Penso che sia anche un modo per impedire alle app di accedere a identificatori univoci utilizzabili al di fuori dell'ambito dell'app: qualsiasi ID utente recuperato sotto l'API 2.0 è specifico della sola app.

+1

Questo è il mio problema. Sto cercando di identificare gli utenti, nel mio database, che non usano ancora la mia app. Come se avessi un sacco di record nella tabella delle persone, ognuno con il nome utente di Facebook. Quindi, quando accedono alla mia app, vorrei verificare se c'era una persona con quel particolare nome utente e collegarlo. Come puoi vedere, non posso usare app_scopped_id perché quegli utenti potrebbero non aver mai usato la mia app (ma avrebbero accesso quando lo fanno). Prima dell'API 2.0, stavo usando l'ID utente globale, che non è più un'opzione. Comunque, grazie per il tuo commento. – joaopribs

+0

L'ultima API FB ha ottenuto una classe denominata "Profilo" che può ottenere tutto ciò che serve. –

+0

Gli attributi user_id e name della classe FBSDKProfile nell'API 4.0 non sono quelli che si chiamavano "username". "nome" è solo il nome completo della persona, che combina nome e cognome, ecc. user_id è l'ID ambito dell'app, non un ID universale. La scelta di deprecare l'accesso universale di ID e username da parte delle app è stata una scelta di privacy - difficilmente avremo mai accesso ad esse. La migliore idea è l'API di mappatura aziendale descritta di seguito. – giff

5

Come soluzione temporanea, è possibile utilizzare l'e-mail come identificativo univoco. L'indirizzo email può essere recuperato utilizzando "email" come ambito di autorizzazione.

Facebook ha rimosso il campo del nome utente dalla nuova versione dell'API. Non è possibile recuperare il nome utente. Ma Facebook fornisce un ID univoco specifico dell'applicazione. Se è necessario condividere lo stesso utente tra più app, è possibile utilizzare l'API di mappatura aziendale introdotta di recente. Ciò consente di aggiungere tutte le app richieste a un gruppo. In questo caso l'ID sarà unico tra tutte le app del gruppo.

ulteriori informazioni sulla mappatura API Business è disponibile presso https://developers.facebook.com/docs/apps/for-business1

+1

Il mio problema è che ho bisogno di qualcosa per identificare gli utenti che non hanno nemmeno iniziato a usare il mio sistema. Ad esempio, l'amministratore di sistema inserirà "qualcosa" che identifica l'utente in facebook e, quando un utente tenta di accedere al mio sistema, gli sarà concesso l'accesso se questo "qualcosa" corrisponde a un record nel mio database. L'uso dell'e-mail FUNZIONA sicuramente, ma sai come ottenere l'email di un utente, se non utilizza ancora il mio sistema, che potrebbe essere inserito dall'amministratore di sistema? In precedenza ho utilizzato il nome utente perché è già presente nell'URL del profilo dell'utente ed è stato così facile. – joaopribs

+4

L'uso dell'e-mail non è affidabile. Sembra che se un utente nasconde la propria email di Facebook dalla propria timeline, come ho fatto io, Facebook non la restituirà. – Matt

+0

sei sicuro che gli ID utente con scope sono uguali in tutte le app che è stato aggiunto in FB business manager ?? quando chiamo '/ me/ids_for_business' per grafico api vedo che l'id utente è diverso per app. Per cortesia risponda. –

8

ho trovato una semplice soluzione che comporta una richiesta GET a Facebook. Invece del nome utente, Facebook ti darà un ID che è unico per la tua applicazione.

Ho riscontrato che l'inoltro di una richiesta a https://www.facebook.com/[profile_id] verrà quindi reindirizzato al profilo reale dell'utente. Il nome utente può essere estratto dall'URL di reindirizzamento.

Esempio:

> curl -i https://www.facebook.com/710290539 
HTTP/1.1 301 Moved Permanently 
Location: https://www.facebook.com/colinskow 

(Nota:. Dato che io sono il proprietario del l'applicazione in modalità di test, questo potrebbe essere un'eccezione prega fatemi sapere nei commenti se siete in grado di confermare questo in un ambiente di produzione.)

+1

perché dovrei farlo è al di là di me ... –

+3

Sembra che Facebook abbia già cambiato quella risposta. Ora reindirizzerà per accedere prima di accedere a quell'URL. – chhantyal

+0

@chhantyal Non vedo alcun cambiamento in quella risposta, continuando a essere reindirizzato al nome utente. Hai una risposta diversa? – Noam

Problemi correlati