Отказ от отображения документа, потому что отображение запрещено с помощью X-Frame-Options
Я создаю приложение Facebook, и я заметил, что при попытке получить статус входа пользователя с помощью Javascript API я иногда получаю сообщение об ошибке:
"Отказано от отображения документа, потому что отображение запрещено с помощью X-Frame-Options."
Я смог воспроизвести это каждый раз, когда я попадал на страницу "проверить статус входа в систему" только при использовании Facebook в качестве страницы, а не в моей учетной записи пользователя. Этого достаточно легко избежать, когда я знаю, что это вызывает проблему, но, очевидно, мои пользователи могут этого не знать.
Есть ли способ определить, использует ли пользователь Facebook в качестве страницы или нет? Поскольку это, похоже, сильно разрушает мое приложение.
Ответы
Ответ 1
У меня тоже была эта проблема, исправлено:
Приложение перенаправляло пользователя на экран входа в систему из Facebook (диалоговое окно auth), в то время как пользователь уже вошел в систему.
Поэтому я изменил код, чтобы перенаправить либо на страницу успеха, если вы вошли в систему, либо в диалоговое окно, если оно не вошло в систему.
Ответ 2
Это проблема, когда facebook перенаправляет ваше приложение из веб-браузера, а затем перенаправляется на вход авторизации facebook. Вы должны убедиться, что форма заменяет страницу и не загружается в холст facebook, как она не нравится.
Итак, вам нужно сделать чистый перенаправление, например, это node example
res.send("<script> top.location.href='"+ "https://www.facebook.com/dialog/oauth?
client_id=*********&redirect_uri=http://apps.facebook.com/myapp" + "'</script>");
Посмотрите на эту страницу facebook dev и ее на шаге 3
https://developers.facebook.com/docs/howtos/login/server-side-login/
Кажется, что проблема не связана с мобильными приложениями на рабочем столе
Ответ 3
Работает ли этот 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);
}