У меня есть мобильный веб-сайт, созданный с использованием jQuery Mobile. Я часто запускаю его в полноэкранном режиме или режиме мобильного веб-приложения на своем iPhone (я добавил веб-приложение на домашний экран iPhone).
На одной из страниц пользователь должен войти в Facebook с помощью API JavaScript Facebook Connect. Если пользователь еще не вошел в систему, это можно сделать, нажав кнопку входа в систему. Обработчик события для этой кнопки выглядит так:
("#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 на всю страницу), логин будет работать отлично.
Могу ли я попробовать еще что-нибудь? У кого-нибудь есть логин JavaScript API Facebook Connect, работающий во время работы в полноэкранном режиме / режиме веб-приложения на iPhone?
Заранее спасибо!