У меня есть мобильный веб-сайт, созданный с использованием jQuery Mobile. Я часто запускаю его в полноэкранном режиме/режиме мобильного веб-приложения на своем iPhone (я добавил веб-приложение на домашний экран iPhone).
На одной из страниц пользователю необходимо авторизоваться в Facebook с помощью Facebook Connect JavaScript API. Если пользователь еще не вошел в систему, это можно сделать, нажав кнопку входа. Обработчик события для этой кнопки выглядит так:
("#fbLogin").click(function () {
FB.login(handleStatusChange(response),
{ scope: "publish_stream",
connect_display: "touch" });
});
В приведенном выше коде я вставил несколько разрывов строк для лучшей читабельности, но значения такие же, как в примере. Функция обратного вызова (handleStatusChange) обрабатывает ответ на запрос входа в систему.
Когда я нажимаю эту кнопку, в окне моего веб-приложения открывается страница входа в Facebook. Если я еще не принял приложение Facebook, я также должен предоставить ему разрешения. Все это работает нормально. Но после того, как я дал разрешения / вошел в систему, я остался висеть на совершенно пустом экране.
Я также попробовал другой подход к входу в систему, поместив его в обработчик события кнопки входа:
window.location = "https://www.facebook.com/login.php
?api_key=MY_API_KEY
&cancel_url=http%3A%2F%2Fwww.mywebsiteurl.com%3A8081
&fbconnect=1
&next=http%3A%2F%2Fwww.mywebsiteurl.com%3A8081
&return_session=1
&session_version=3
&v=1.0
&req_perms=publish_stream
&connect_display=touch";
Опять же, разрывы строк были вставлены для лучшей читабельности. При использовании это всего лишь одна длинная строка.
URL-адрес, используемый в параметрах cancel_url и next, — это тот, который я зарегистрировал в приложении Facebook. Если я попытаюсь использовать другой URL-адрес (например, http://www.google.com), я получу сообщение об ошибке, поэтому это кажется правильным. Как видите, я использую другой порт на своем сервере разработки (порт 8081). Может ли это быть проблемой?
Результат аналогичен предыдущему примеру. Я получаю страницы входа/разрешений, но после того, как все сделано, у меня остается пустой экран. Я попробовал это после прочитав этот пост на старом форуме разработчиков Facebook.
Если я, с другой стороны, попытаюсь запустить это в Safari (а не как полностраничное веб-приложение для iPhone), вход в систему будет работать отлично.
Есть ли что-нибудь еще, что я могу попробовать? У кого-нибудь есть вход в Facebook Connect через JavaScript API, работающий в полноэкранном режиме/режиме веб-приложения на iPhone?
Заранее спасибо!