Кнопка входа в Facebook переадресовывается на пустую страницу на MS Edge

Эта проблема больше не проблема для меня. Facebook больше не позволяет вам делиться/публиковать фотографии в Интернете. Что касается проблемы с входом в систему, я не могу сказать, какое решение предложило решение проблемы, поскольку я больше не работаю над ней. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Я работаю над кнопкой входа в систему для обмена. Кнопка и функция обмена отлично работает в любом браузере, кроме MS Edge. Раньше он работал на Edge 25 (сейчас я на Edge 38).

Проблема в том, что когда я нажимаю кнопку входа в систему, появляется всплывающее окно входа в систему, в котором я могу ввести свои учетные данные. Как только они введены, и я пытаюсь войти, всплывающее окно не закрывается и перенаправляется на этот адрес:

https://www.facebook.com/v2.1/dialog/oauth?app_id=141515299765971&auth_type=&channel_url=http%3A%2F%2Fstaticxx.facebook.com%2Fconnect%2Fxd_arbiter%2Fr%2FlY4eZXm_YWu.js%3Fversion%3D42%23cb%3Df2de29c1e9204f4%26domain%3Dikeabuilds.sandbox3.2020.net%26origin%3Dhttp%253A%252F%252Fikeabuilds.sandbox3.2020.net%252Ff1deb23126bcc0c%26relation%3Dopener&client_id=141515299765971&display=popup&domain=ikeabuilds.sandbox3.2020.net&e2e=%7B%7D&locale=en_US&logger_id=80452c59-88a0-7681-0f2c-ac690c1d62b8&origin=1&redirect_uri=http%3A%2F%2Fstaticxx.facebook.com%2Fconnect%2Fxd_arbiter%2Fr%2FlY4eZXm_YWu.js%3Fversion%3D42%23cb%3Df1aa391653df35c%26domain%3Dikeabuilds.sandbox3.2020.net%26origin%3Dhttp%253A%252F%252Fikeabuilds.sandbox3.2020.net%252Ff1deb23126bcc0c%26relation%3Dopener%26frame%3Df7b23e2a9aa328&ref=LoginButton&response_type=none%2Ctoken%2Csigned_request&scope=publish_actions&sdk=joey&seen_revocable_perms_nux=false&version=v2.1

Я не считаю, вошли в систему тоже. Я много искал в Интернете и даже прочитал документацию по кнопке входа в систему и ничего не нашел, кроме того, что есть только один обходной путь. Он состоит из добавления URL-адреса facebook на доверенный сайт в настройках Windows. Это не жизнеспособное решение и, следовательно, не решение для меня. Изображения - это код html-страницы входа на Facebook, пустой страницы перенаправления и страницы, содержащей кнопку входа. У меня также есть страница .js, содержащая все функции, связанные с Facebook, но не умещается в одно изображение, при необходимости я предоставлю его. Что здесь происходит?

Кнопка входа в Facebook:

Ссылка для перенаправления:

HTML-код для страницы, содержащей кнопку входа в Facebook:

Ответ 1

Из того, что я тестировал, я могу воспроизвести вашу проблему, но я не уверен, так ли это в вашей ситуации.

Такая же проблема возникает, когда MS Edge или IE блокирует всплывающие окна, и пользователь выбирает " Разрешить один раз " всплывающее окно, и когда всплывающее окно пытается перенаправить, вы получаете пустую страницу (она заблокирована).

Если вы выберете " Разрешить всегда ", всплывающее окно будет перенаправляться и закрываться правильно.

Что вы можете сделать, чтобы преодолеть это, фактически

  • переадресация имени пользователя,
  • пусть перенаправление помещает файл cookie в ваш домен
  • используйте Facebook JS SDK и проверьте, подключен ли пользователь.

Итак, сначала включите переадресацию имени:

enter image description here

а затем выполните:

FB.init({
  appId            : 'APP_ID',
  autoLogAppEvents : true,
  cookie           : true,  // <-- use this
  xfbml            : true,
  version          : 'v3.0'
});
var uri = encodeURI('http://test.gr');
FB.getLoginStatus(function(response) {
    if (response.status === 'connected') {
        console.log(response.status); // should log connected.

    } else {
       window.location = 'https://www.facebook.com/v3.0/dialog/oauth?client_id=APP_ID&redirect_uri='+encodeURI(uri)+'&display=popup&scope=user_status&response_type=token&version=v3.0';
    }
});

Замените "test.gr" и "APP_ID" на свой домен и идентификатор приложения.

После перенаправления на ваш сайт, cookie с именем fbm_ {APP_ID} будет размещен для вашего домена, что позволит пользователю войти в систему.

Рекомендации

Ответ 2

Я думаю, вы должны оставить javascript SDK более настраиваемым решением, называемым ручным логином.

Вместо использования fb:login-button вы можете написать свою пользовательскую кнопку следующим образом:

<a href="#" onclick="location.href='https://www.facebook.com/v3.0/dialog/oauth?client_id={app-id}&redirect_uri={redirect-uri}&state={state-param}'; return false;">Log-in to my app</a>

и настройте параметр redirect_uri с URL-адресом html-страницы вашего приложения, которую вы можете обработать своим пользовательским кодом, например сообщение благодарности и тайм-аут с окном.close().