Вход в Facebook без всплывающих окон?
Я пытаюсь создать простое приложение facebook, но для авторизации кажется, что он всегда блокируется всплывающим блокировщиком. Таким образом, мой код:
FB.init({
appId : THEAPPPIDDDD,
status : true,
cookie : true,
xfbml : true,
});
FB.login(function(response) {
if (response.authResponse) {
FB.api('/me', function(response) {
FB.logout(function(response) {
console.log('Logged out.');
});
});
} else {
console.log('User did not authorize.');
}
});
Любая помощь будет принята с благодарностью... спасибо
Ответы
Ответ 1
Я знаю, что этот вопрос является возможным дубликатом другого вопроса: Остановите блокировщик всплывающих окон facebook Я отправляю это, чтобы помочь Дейву Чжан. Я адаптировал этот код для одного из моих сайтов. В следующем коде замените URL-адрес YOUR_APP_ID и URL-адрес вашего веб-сайта, после чего вход в Facebook будет всплывающим.
//Javascript
var uri = encodeURI('http://example.com');
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
window.location.href=uri;
} else {
window.location = encodeURI("https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri="+uri+"&response_type=token");
}
});
Это будет просто перенаправлять непосредственно, а не открывать всплывающее окно.
Ответ 2
Вы должны инициировать свой код входа при нажатии какой-либо кнопки. Как хорошая практика при работе с FB, процесс регистрации всегда должен начинаться пользователем.
Назовите свой код нажатием кнопки, и он должен исправить вашу проблему.
Ответ 3
чтобы избежать входа в систему через всплывающее окно, вы должны начать проверку подлинности на стороне сервера
Ответ 4
Блокировщик всплывающих окон всегда будет инициировать, если действие всплывающего окна не возникло в результате события, вызванного пользователем. Например, если вы попытаетесь сделать всплывающее окно в событии загрузки, браузер, скорее всего, будет использовать блокировщик всплывающих окон. С другой стороны, если вы вызываете всплывающее окно при событии клика или событии keydown, менее вероятно, что будет активирован блокировщик всплывающих окон.
Вы также можете использовать метод, в котором ваше приложение обнаруживает, было ли всплывающее окно заблокировано. Вы можете прочитать об этом здесь.
Как уже упоминалось в других ответах, если вы предпочитаете процесс аутентификации без всплывающих окон вообще, вам нужно будет обрабатывать это на стороне сервера с помощью OAuth.