Пустой белый экран после входа в 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