Отказался отображать документ, потому что отображение запрещено X-Frame-Options - PullRequest
23 голосов
/ 29 февраля 2012

Я создаю приложение Facebook и заметил, что при попытке получить статус входа пользователя с помощью его API Javascript иногда я получаю сообщение об ошибке:

"Отказано в отображении документа, потому что отображение запрещено X-Frame-Options."

Мне удалось воспроизвести это каждый раз, когда я захожу на страницу «Проверить статус входа» приложения только , используя Facebook как страницу , а не мою учетную запись пользователя. Этого достаточно легко избежать, поскольку теперь я знаю, что это вызывает проблему, но, очевидно, мои пользователи могут этого не знать.

Есть ли способ определить, использует ли пользователь Facebook в качестве страницы или нет? Поскольку это, кажется, в значительной степени разрушает все мое приложение.

Ответы [ 3 ]

1 голос
/ 03 мая 2012

У меня тоже была эта проблема, исправлена ​​с помощью: приложение перенаправляло пользователя на экран входа из Facebook (диалоговое окно авторизации), в то время как пользователь уже вошел в систему. Поэтому я изменил код, чтобы перенаправить либо к успехустраница, если вы вошли в систему, или в диалоговое окно, если вы не вошли в систему.

1 голос
/ 21 февраля 2013

Это проблема, когда Facebook перенаправляет на ваше приложение из веб-браузера, а затем вы перенаправляете на страницу авторизации Facebook. Вы должны убедиться, что форма заменяет страницу и не загружается на холст Facebook, как это происходит. не нравится.

Таким образом, вы должны выполнить чистое перенаправление, как, например, это пример узла

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

Посмотрите на эту страницу разработчика в Facebook и на шаге 3

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

Кажется, нет проблем с мобильными приложениями, только на рабочем столе

0 голосов
/ 04 апреля 2012

Работает ли этот javascript?

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

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