пустой белый экран после входа в FB через веб-приложение? - PullRequest
11 голосов
/ 05 ноября 2011

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

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

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

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

спасибо.

Ответы [ 4 ]

7 голосов
/ 27 ноября 2011

Все, что вам нужно сделать, это добавить параметры "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'});
6 голосов
/ 23 января 2013

Я нашел лучший ответ на этот пост: 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 делает свое дело.

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

1 голос
/ 09 ноября 2011

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

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

Это документировано для настольных SDK fb, так что я попробовал, и это вроде работает. Когда я говорю «что-то вроде», я имею в виду, что на веб-мобильном устройстве это кажется нормальным, но если вы попытаетесь запустить его в браузере на рабочем столе, всплывающее окно входа будет перенаправлено на указанный URL во всплывающем окне входа в систему, а не в его родительском окне .

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

0 голосов
/ 27 декабря 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...