Пустой белый экран после входа в FB через веб-приложение?

Я пробовал следовать мобильному веб-сайту FB "Руководство по началу работы" по адресу: https://developers.facebook.com/docs/guides/mobile/web/ для веб-приложения, которое я открываю на весь экран на своем iphone.

но когда я пытаюсь войти в систему, используя открывающуюся страницу регистрации fb, я получаю пустой белый экран после того, как я нажму кнопку "Войти". Пользователь вошел в систему, хотя.. Я это знаю, потому что, если я закрываю и снова открываю свое веб-приложение, я проверяю статус входа и пытаюсь получить некоторую информацию о пользователе, и он отлично работает...

Когда я пытаюсь использовать одно и то же веб-приложение на своем рабочем столе Chrome или моем сафари iphone, процесс входа в систему выполняется нормально... он прерывается только из полноэкранного веб-приложения.

любые идеи? Я просто следую примеру кода из FB: - (

спасибо.

Ответ 1

Я нашел обходной путь к проблеме... кажется, есть недокументированный атрибут redirect_uri, который я могу использовать в методе login(), например.

login({scope:'email', redirect_uri:'where_to_go_when_login_ends'})

Он задокументирован для SDK для настольных ПК, поэтому я дал ему походы и его работы. Когда я говорю "вроде", я имею в виду, что на веб-мобильном телефоне это выглядит нормально, но если вы попытаетесь запустить его в настольном браузере, всплывающее окно входа будет перенаправлено на заданный URL-адрес во всплывающем окне входа - не в его родительском окне.

Я надеюсь, что это достаточно хорошо и не вызывает никаких побочных эффектов, я действительно не могу сказать. Но это то, что я буду использовать в то же время из-за отсутствия других вариантов: ^)

Ответ 2

Все, что вам нужно сделать, это добавить "display: touch" и параметры redirect_uri к логину как:

FB.login(function(response) {
   if (response.authResponse) {
     console.log('Welcome!  Fetching your information.... ');
     FB.api('/me', function(response) {
      console.log('Good to see you, ' + response.name + '.');
       FB.logout(function(response) {
         console.log('Logged out.');
       });
     });
  } else {
    console.log('User cancelled login or did not fully authorize.');
  }
}, {scope: 'email,publish_stream' , redirect_uri: 'YOUR_REDIRECT_URL' , display : 'touch'});

Ответ 3

Я нашел лучший ответ на этот пост: FB.login сломанный поток для iOS WebApp

var permissions = 'email,publish_stream,manage_pages,read_stream';
var permissionUrl = "https://m.facebook.com/dialog/oauth?client_id=" + m_appId + "&response_type=code&redirect_uri=" + encodeURIComponent(m_appUrl) + "&scope=" + permissions;
window.location = permissionUrl;

Отметить ответ выше не работает больше... Facebook, как правило, часто ломает ситуацию. Отображение страницы входа с использованием window.location делает трюк.

Мое приложение потребовало обновления после моего входа в систему, так что это сработало отлично. Поэтому вам может потребоваться переосмыслить поток, если вы не хотите обновлять.

Ответ 4

Это может быть ошибка API facebook. Я не думаю, что они протестировали свой API в режиме веб-приложений iPhone. Здесь может быть проблема: https://developers.facebook.com/bugs/317323871621290