2012-02-28 4 views
23

Sto costruendo un'app Facebook e ho notato che quando si tenta di ottenere lo stato di accesso dell'utente utilizzando la loro API Javascript, a volte viene visualizzato l'errore:Rifiutato di visualizzare il documento perché visualizzato vietato da X-Frame-Options

"Rifiutato di visualizzare il documento perché la visualizzazione è vietata da X-Frame-Options."

Sono stato in grado di riprodurre questo ogni volta che ho colpito la pagina "Controlla stato login" dell'app solo mentre si utilizza Facebook come pagina, anziché il mio account utente. Questo è abbastanza facile da evitare ora che so che questo causa il problema, ma ovviamente i miei utenti potrebbero non saperlo.

C'è un modo per determinare se l'utente utilizza Facebook come pagina o no? Dal momento che sembra quasi rovinare la mia intera app.

+0

Puoi confermare se il tuo file channel.htm funziona come previsto? – DMCS

+0

possibile duplicato di [Way to detect "Rifiutato di visualizzare il documento perché display vietato da X-Frame-Options." errore?] (http://stackoverflow.com/questions/9106413/way-to-detect-refused-to-display-document-because-display-forbidden-by-x-frame) – balexandre

risposta

1

ho avuto anche questo problema, fissato con:. L'applicazione è stata reindirizzare l'utente a una schermata di login da Facebook (finestra di dialogo di autenticazione), mentre l'utente è già stato effettuato l'accesso Così ho cambiato il codice per reindirizzare alla pagina di successo se connesso, o alla finestra di dialogo se non hai effettuato il login.

+17

Come hai fatto? – Himmators

+3

Se non spiega come l'ha fatto, perché riceve l'assegno verde? –

0

Questo javascript funziona?

document.write(isFacebookPage()?"YES, I'm in a Facebook Page!":"No, not a Facebook Page"); 

function isFacebookPage(){ 
    return (document.location.href.indexOf('/pages/')>0); 
} 
1

Questo è un problema quando Facebook reindirizza la tua app da un browser web e poi reindirizza all'autorizzazione di Facebook per accedere. Devi assicurarti che il modulo sostituisca la pagina e non venga caricato nella tela di facebook perché non gli piace.

Quindi devi fare un redirect pulita in questo modo -Questo è esempio nodo

res.send("<script> top.location.href='"+ "https://www.facebook.com/dialog/oauth?  
client_id=*********&redirect_uri=http://apps.facebook.com/myapp" + "'</script>"); 

un'occhiata a questa pagina facebook dev e la sua al punto 3

https://developers.facebook.com/docs/howtos/login/server-side-login/

non sembra essere un problema con le app mobili solo sul desktop