Неожиданная подстава от сафари.Делаю авторизацию с помощью fb sdk. использую следующий код для показа окошка авторизации:
function updateStatusAndLogin() {
FB.getLoginStatus(function(response) {
//alert("login status:"+response.status);
if(response.status!="connected") {
FB.login(function(response) {
});
}
},true);
}
Запрос FB.getLoginStatus перед собственно FB.login(..) нужен на случай, если fb-сессия протухла.Второй параметр true указывает sdk что надо сделать запрос к серверу, а не брать статус из кеша.Без этого запроса sdk говорит 'user already connected' и отказывается показывать окно авторизации. Так вот все браузеры нормально работают, а вот в сафари ко времени когда приходит обновленный статус, браузер забывает что был клик юзера и автоблокировщик блокирует попап с формой авторизации.Если отключить автоблокировку все начинает работать.Причем субъективно запрос на статус занимает не больше секунды.
Я выложил тестовую
флэшку с проблемой.Кнопка слева просто сразу дергает FB.login() она работает, кнопка справа - сначала запрашивает обновленный статус и потом FB.login() с ней проблема(причем как в макоси, так и под виндой).Кто подскажет как можно обойти? Оч. не хотелось бы просить юзера отключать блокировку попапов.