2012-02-28 10 views
23

Buduję aplikację na Facebooku i zauważyłem, że przy próbie uzyskania statusu logowania użytkownika przy użyciu ich interfejsu API JavaScript czasami pojawia się błąd:Odmówił wyświetlania dokumentu, ponieważ wyświetlanie zabronione przez X-Frame-Options

"Odmówił wyświetlania dokumentu, ponieważ wyświetlanie jest zabronione przez X-Frame-Opcje."

Byłem w stanie odtworzyć to za każdym razem, gdy trafiłem na stronę "sprawdź status logowania" aplikacji tylko , używając Facebooka jako strony, a nie mojego konta użytkownika. Jest to dość łatwe, aby uniknąć teraz, ponieważ wiem, że to powoduje problem, ale oczywiście moi użytkownicy mogą tego nie wiedzieć.

Czy istnieje sposób określenia, czy użytkownik korzysta z Facebooka jako strony, czy nie? Ponieważ to wydaje się zrujnować całą moją aplikację.

+0

Czy możesz potwierdzić, że plik channel.htm działa zgodnie z oczekiwaniami? – DMCS

+0

możliwe duplikowanie [Sposób wykrywania "Odmówiono wyświetlania dokumentu, ponieważ wyświetlanie jest zabronione przez X-Frame-Options." błąd?] (http://stackoverflow.com/questions/9106413/way-to-detect-refused-to-display-document-because-display-forbidden-by-x-frame) – balexandre

Odpowiedz

1

miałem ten problem też stałe go. Aplikacja została przekierowanie użytkownika na ekranie logowania z Facebook (okno dialogowe auth), gdy użytkownik był już zalogowany Więc zmieniłem kod aby przekierować albo na stronę sukcesu, jeśli jest zalogowany, albo do okna dialogowego, jeśli nie jest zalogowany.

+17

Jak to zrobiłeś? – Himmators

+3

Jeśli nie wyjaśni, jak to zrobił, dlaczego dostał zielony czek? –

0

Czy to javascript działa?

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

To jest problem, gdy Facebook przekierowuje do Twojej aplikacji z przeglądarki internetowej, a następnie przekierowujesz się do logowania do autoryzacji na Facebooku. Musisz upewnić się, że formularz zastępuje stronę i nie wczytuje się w płótno na Facebooku, ponieważ to się nie podoba.

Więc trzeba zrobić czystą przekierowanie jak tak -To Przykład węzła

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

Spójrz na tej stronie facebook dev i jej w kroku 3

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

nie wydaje się być problemem z aplikacjami mobilnymi po prostu na pulpicie

Powiązane problemy