Я следую railscast, чтобы добавить функцию «Войдите в систему с Facebook» на моем сайте, нет проблем с регистрацией. Но при попытке выйти из системы, то кажется, что FB.getLoginStatus никогда не огонь, даже если отключить Sandbox Mode в настройках приложения разработчика facebook (как это было предложено в другой дискуссии):FB.getLoginStatus не работает в Chrome, даже песочница отключена
(function() {
jQuery(function() {
$('body').prepend('<div id="fb-root"></div>');
return $.ajax({
url: "" + window.location.protocol + "//connect.facebook.net/en_US/all.js",
dataType: 'script',
cache: true
});
});
window.fbAsyncInit = function() {
FB.init({
appId: 'xxxxxomittedxxxxx',
cookie: true,
status: true,
xfbml: true,
oauth: true
});
$('#sign_in').click(function(e) {
e.preventDefault();
return FB.login(function(response) {
if (response.authResponse) {
return window.location = '/auth/facebook/callback';
}
});
});
return $('#sign_out').click(function(e) {
FB.getLoginStatus(function(response) {
if (response.authResponse) {
return FB.logout(response.authResponse);
}
});
return true;
});
};
}).call(this);
Причина Я знаю FB.getLoginStatus никогда не (или не работает), я заменить тело:
FB.getLoginStatus(function(response) {
return alert("I am here!");
});
, и я не могу видеть мое уведомление в то время как «sign_out» нажмите кнопку.
Я работаю как в Chrome, так и в Firefox, имеющих такое же поведение. Может ли кто-нибудь помочь определить, что мне не хватает? Большое спасибо.
Позвольте мне описать более конкретно о «поведении» я столкнулся:
- войти с Facebook из mysite.com впервые окно Логин Facebook будет всплывать и попросить адрес электронной почты и пароль, и я могу зайдите на мой сайт отлично нормально и работайте как ожидалось
- затем я нажимаю на кнопку sign_out от mysite.com/users/1, похоже, что он выйдет ок.
- затем снова войдите в систему с Facebook с сайта mysite.com, теперь он больше не будет всплывать в окне входа в систему Facebook и напрямую подключается к mysite.com/users/1 без запроса электронной почты и пароля!
- Если я открою другое окно браузера и перейду на facebook.com и выйдите из него, тогда, когда я войду в Facebook с сайта mysite.com, он откроет окно входа в Facebook и попросит мой адрес электронной почты и пароль.
Я хотел бы мой сайт себя: «когда выход из системы из mysite.com/users/n и войти в систему с Facebook снова с mysite.com, окно Войти Facebook будет всплывать»
Любой может быть помощи? Большое спасибо.
EDIT:
Дальнейшие исследования обнаружили, что «корень» причина может быть еще: знак вне находится под другим маршрутом (или страницы) знака в маршруте и FB.getLoginStatus просто не может быть пожар под mysite.com/signout. Сообщение об ошибке из firebug указывает, что «данный URL-адрес не разрешен конфигурацией приложения: один или несколько указанных URL-адресов не разрешены настройками приложения. Он должен соответствовать URL-адресу веб-сайта или холста, или домен должен быть субдомен одного из доменов приложения. "
Чтобы убедиться, что это проблема маршрута, я помещаю ссылку на один маршрут (страницу) в качестве знака в маршруте, который является корневым маршрутом mysite.com, как указано в «Веб-сайте с использованием Facebook», все работает и может выйти из системы, как и ожидалось:
<%= link_to "sign out facebook", "#" , id: "sign_out" %>
кстати sign_out JS была пересмотрена, чтобы избавиться от FB.logout (response.authResponse) неперехваченное [объект Object] ошибка, потому что FB.logout ожидает функции в качестве параметра:
return $('#sign_out').click(function(e) {
FB.getLoginStatus(function(response) {
if (response.authResponse) {
FB.logout();
}
}, true);
});
};
Итак, в нижней строке: FB.getLoginStatus может все еще имеют ошибку, которая не может обрабатывать вызов с другого маршрута, чем знак в маршруте. (Я тестировал Chrome, Firefox и Safari, и все они ведут себя одинаково, но не соответствуют IE10.Как-то IE10 работает, даже выйдя на другой маршрут.)
Любые комментарии от людей, которые имеют схожие проблемы? Пожалуйста, порекомендуйте. Заранее большое спасибо.
Большое спасибо за предложение, попробовали оба, но одно и то же поведение. Все еще не может войти и сделать что-то с ответом. В моем случае я не могу FB.logout. –
Спасибо за помощь. Я попробовал свои js. Он ведет себя так же, как и раньше, и с одним дополнительным сообщением об ошибке: FB.logout(), вызываемый без токена доступа. –
Можете ли вы показать мне свою полную страницу? – EnterSB