В диалоговом окне oauth в Facebook отображается сообщение "Произошла ошибка. Повторите попытку позже".
Я скопировал HTML-код ниже с страницы разработчиков Facebook на Facebook и заменил APPID своим идентификатором приложения. Я помещаю эту страницу на свой веб-сервер dev. Если я перейду на страницу, она просто запустит кнопку входа в систему. Но нажав кнопку входа в систему, он откроет страницу входа в систему Facebook, в которой говорится: "Произошла ошибка. Повторите попытку позже".
Я должен упустить что-то фундаментальное. Любые идеи?
<html>
<head>
<title>My Facebook Login Page</title>
</head>
<body>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'APPID',
status : true,
cookie : true,
xfbml : true,
oauth : true // removed a comma after 'true' as it generates a script error
});
};
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>
<div class="fb-login-button">Login with Facebook</div>
</body>
</html>
Дальнейшее исследование показывает, что он отлично работает в Chrome, Firefox и Safari и не работает в IE9.
Это URL-адрес, который он использует в Chrome, он отлично работает:
https://www.facebook.com/login.php?api_key=255367907914&skip_api_login=1&display=popup&cancel_url=https%3A%2F%2Fs-static.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%3Fversion%3D3%26error_reason%3Duser_denied%26error%3Daccess_denied%26error_description%3DThe%2Buser%2Bdenied%2Byour%2Brequest.%23cb%3Df16c026dc%26origin%3Dhttp%253A%252F%252Fsami.test.eu%253A81%252Ff314f6d52%26relation%3Dopener%26transport%3Dpostmessage%26frame%3Df48d09da8&fbconnect=1&next=https%3A%2F%2Fwww.facebook.com%2Fdialog%2Fpermissions.request%3F_path%3Dpermissions.request%26app_id%3D255367907914%26redirect_uri%3Dhttps%253A%252F%252Fs-static.ak.fbcdn.net%252Fconnect%252Fxd_proxy.php%253Fversion%253D3%2523cb%253Df16c026dc%2526origin%253Dhttp%25253A%25252F%25252Fsami.test.eu%25253A81%25252Ff314f6d52%2526relation%253Dopener%2526transport%253Dpostmessage%2526frame%253Df48d09da8%26sdk%3Djoey%26display%3Dpopup%26response_type%3Dtoken%252Csigned_request%26domain%3Dsami.test.eu%26fbconnect%3D1%26from_login%3D1%26client_id%3D255367907914&rcount=1
Это URL-адрес в IE9, который приводит к ошибке:
https://www.facebook.com/dialog/oauth?api_key=255367907914&app_id=255367907914&client_id=255367907914&display=popup&domain=sami.test.eu&locale=en_US&origin=1&redirect_uri=https%3A%2F%2Fs-static.ak.fbcdn.net%2Fconnect%2Fxd_proxy.php%3Fversion%3D3%23cb%3Df14fd3a0495986%26origin%3Dhttp%253A%252F%252Fsami.test.eu%252Ff2d9bfc6aa24134%26relation%3Dopener%26transport%3Dflash%26frame%3Df2539c36bc13734&response_type=token%2Csigned_request&sdk=joey
Ответы
Ответ 1
Я понял это после того, как у меня было время для сеанса отладки.
Я использовал поддельный домен для разработки моего приложения локально. У меня есть домен в файле локальных хостов, сопоставленный с 127.0.0.1 (я делал это по причинам, не связанным с этим сообщением).
Оказывается, при переходе на страницу входа в систему Facebook IE передает 127.0.0.1 в URL-адрес в facebook в качестве URL-адреса возврата. 127.0.0.1 не соответствует URL-адресу, который был настроен для моего приложения в Facebook, поэтому на странице входа отображается сообщение "Ошибка" (было бы неплохо получить правильное сообщение об ошибке).
Другие браузеры отправляют мой поддельный домен в качестве обратного URL, и у них нет проблем.
В любом случае я прекратил использовать поддельный домен и гарантировал, что доменное имя точно соответствует конфигурации в Facebook, и теперь проблема исчезла.
Спасибо за все ответы. Предложение zerkms о сравнении URL-адресов, наконец, приводит к решению.
Ответ 2
SOLVED (по крайней мере, для меня): у меня не было "веб-сайта с входом в Facebook", настроенного в настройках моего приложения facebook, потому что я сделал приложение вкладки страницы. Нет внешнего веб-сайта. К сожалению, я сделал отладку без фреймворка iframe вокруг приложения → так вот почему.
Чтобы избавиться от ошибки, я заполнил "Веб-сайт с помощью Facebook Login" и заполнил вход "Домены приложений" в настройках приложения.
Странно, что эта проблема встречается только в IE!
Ответ 3
убедитесь, что вы не находитесь (ожидаете) в качестве разработчика/администратора в настройках приложения.
Ответ 4
Я получаю эту ошибку, если приложение неверно. Дважды проверьте свой AppID.
Ответ 5
Я получаю это, потому что SSL не настроен на моем локальном, поэтому https://mywebsite.in/. не работает.
Затем в моем приложении я включил режим песочницы и удалил безопасный URL-адрес, например, Secure Canvas URL.
Примечание: при включении режима песочницы только создатель приложения сможет получить доступ к логину facebook. Другие пользователи будут ниже сообщения
An error occurred. Please try again later.
Ответ 6
Поскольку он специфичен для IE, ответ всегда был (ну, в 99,5% случаев), что ваш сервер не отправляет заголовки p3p. См. http://www.hanselman.com/blog/TheImportanceOfP3PAndACompactPrivacyPolicy.aspx для получения информации о том, как настроить этих педиков, чтобы IE играл хорошо.
Ответ 7
У меня такая же проблема, но здесь может возникнуть проблема с доменным именем. в то время как мы создаем facebook appid, в этом разделе "Веб-сайт с Facebook Login" нам нужно правильно указать URL-адрес сайта. Значит, когда мы тестируем приложение локально, мы должны упомянуть URL-адрес как "http://localhost://{portnumber}", и если мы работаем на сервере, нам нужно указать фактический URL-адрес, например "http://mywebsite. ком".
Ответ 8
ОБНОВЛЕННОЕ РЕШЕНИЕ: в настройке вашего приложения FB вам нужно добавить платформу сайта с установленным URL-адресом вашего веб-сайта. Затем вы можете добавить домены приложений, которые я установил для нашего базового домена нашего сайта (например, для URL-адреса, такого как http://www.mycoolwebsite.com
, просто используйте mycoolwebsite.com
).
![New FB Settings Screenshot]()
ВАЖНО: Для этого вам нужно будет использовать субдомен URL вашего приложения для вашей локальной разработки. Вы можете сделать это легко, изменив файл hosts на своем компьютере разработки, чтобы использовать несуществующий субдомен вашего сайта, например local.mycoolwebsite.com
. Просто удалите "файл хостов" для своей платформы (например, mac/windows), если вы не знаете, как это сделать.