Domanda

Sto scrivendo un'applicazione Facebook che è un semplice gioco da tavolo che ho implementato in JavaScript. Facebook sembra solo per lasciare che le applicazioni vengono eseguite javascript all'interno di un iframe in modo da sto caricando la pagina utilizzando <fb:iframe>. Voglio solo essere in grado di dire la javascript ID dell'utente in modo da poter dire all'utente se è il suo turno o no, ma non riesco a trovare la documentazione su come accedere a dati di Facebook all'interno del fb: iframe. Sto probabilmente manca un po 'di conecpt base, come non capisco l'API di Facebook molto bene.

È stato utile?

Soluzione

API di Facebook è molto difficile da seguire, e la documentazione è molto povera. Hai ragione circa il Javascript ... normale Javascript funziona solo all'interno di un iframe su Facebook, altrimenti si è limitato a un sottoinsieme di filtrato Javascript chiamato FBJS. È possibile ignorare nulla FBJS nella documentazione, e concentrarsi su iframe.

Iframe carico

La prima cosa che vorrei menzionare è che un tag <fb:iframe> in realtà viene reso con un sacco di roba nel src attributo. Quindi, se si mette un tag come questo nella vostra pagina di Facebook: <fb:iframe src="http://example.com/page?x=y">, quello che finisce per diventare quando viene caricato nel browser di un utente è più simile a questo:

<iframe src="http://example.com/page?x=y&fb_sig_in_iframe=1&fb_sig_locale=en_US&fb_sig_in_new_facebook=1&fb_sig_time=1246340245.3338&fb_sig_added=1&fb_sig_profile_update_time=1242155811&fb_sig_expires=1246345200&fb_sig_user=000000001&fb_sig_session_key=2.d13uVGvWVL4hVAXELgxkZw__.3600.1246345200-000000001&fb_sig_ss=mZtFjaexyuyQdGnUz1zhYTA__&fb_sig_api_key=46899e6f07cef023b7fda4fg2e21bc58&fb_sig_app_id=22209322289&fb_sig=bbc165ebc699b12345678960fd043033">

Facebook aggiunge un sacco di roba alla src. Il parametro che ti dice di Facebook ID dell'utente è fb_sig_user (che è 000000001 qui). Sto assumendo la vostra applicazione si configura come un "FBML App", dal momento che probabilmente non sarebbe utilizzare un users.getLoggedInUser() tag in un "Iframe app". Tuttavia, il metodo di rendering è simile in entrambi i casi, e si ottiene un sacco di roba in più per il vostro <=> documento in una "Iframe app" pure.

Questa realtà si passa solo l'ID utente di Facebook il primo carico del iframe, però. Le operazioni successive all'interno del iframe non avranno accesso a tale utente id a meno che non si passa in giro in modo esplicito.

Facebook Connect

Se si desidera interagire con Facebook dall'interno l'iframe, è lì che le librerie Facebook Connect Javascript non appaia nelle migliori istruzioni su come configurare Facebook Connect è probabilmente questa pagina wiki , ma è ancora un po 'torbida. Facebook Connect può essere utilizzato per entrambi i siti completamente esterni, o il contenuto solo regolare all'interno di un iframe. Si rientra in quest'ultima categoria, quindi se si seguono le istruzioni in quel link e utilizzare la prima riga di codice nel passaggio 2 (per la FeatureLoader), si dovrebbe essere ok.

Una volta che hai incluso lo script FeatureLoader.js e chiamato FB.init, si dovrebbe generalmente essere installato e funzionante con FB Connect. Si dovrebbe essere in grado di interagire con la API da allora in poi fuori. Il metodo <=> vi darà l'ID utente corrente all'interno del iframe tramite Javascript.

La speranza che aiuta.

Altri suggerimenti

Si noti che a partire dal marzo 2011, FB si sta muovendo per POST richieste da caricare iframe. Si invia un'azione forma con method = "post" e target = "iframe_canvas", più un input type = "hidden" con un "signed_request"

È CNA utilizzare l'API di Facebook per ottenere l'ID utente chiamando

Users.getLoggedInUser

È possibile accedere a tale valore, quindi utilizzare echo () per aggiungere che, per il codice HTML come una variabile javascript, che la mette a disposizione il codice Javascript.

Prova Env.user, ha il login ID dell'utente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top