2012-04-27 4 views
0

Я использую Facebook Oauth. Мое приложение находится в iframe. Ниже мой первоначальный OAuth URL:Facebook Oauth не работает в iframe в IE и Firefox

https://graph.facebook.com/oauth/authorize?client_id=XXXXX&redirect_uri=XXXX&scope=offline_access,publish_stream

redirect_uri является протокол HTTPS.

В IE8 я получаю следующие ошибки страницы:

[Первоначально он показывает Перейти к Facebook.com ссылки] [1]

[Затем он показывает следующие страницы ошибок] [2]

!

Этот контент не может быть отображен в кадре

В Firefox отображается пустая белая страница. Так что Facebook Oauth не работает в IE, а также в Firefox. Я нашел несколько сообщений на вашем сайте. но это не помогло мне решить мою проблему.

+0

Работает ли ваш сайт в любом браузере? Я понимаю, что вы не можете делать FB oauth внутри iframe. – chesles

+0

Нет, он не работает ни в одном браузере. но в прошлом году он работал во всех браузерах. Разве Facebook что-то изменил для Oauth в iframe? – Mahesh

+0

Да, они перестали допускать это из-за потенциальной возможности эксплуатации, если я не ошибаюсь. – chesles

ответ

3

По https://developers.facebook.com/docs/reference/dialogs/:

IFrame: Для использования приложений при работе внутри фрейма в пределах страницы Canvas на Facebook. Отображает диалог в оверлете в стиле лайтбокса. Из-за риска clickjacking это разрешено только для некоторых определенных диалогов и требует, чтобы вы передали действительный access_token. Этот режим не поддерживается диалоговым окном OAuth.

Даже если вы не указываете iframe как тип дисплея, вы загружаете диалог внутри из фрейма, и facebook обнаруживает это, чтобы предотвратить ClickJacking.

Один хороший способ обойти это, чтобы открыть всплывающее окно, которое выполняет проверку подлинности:

<script type="text/javascript"> 
window.open('https://www.facebook.com/dialog/oauth?display=popup&client_id=...'); 
</script> 

или что-то подобное (открыть URL на вашем сайте, который делает редирект, и т.д.).

Смежные вопросы