У вас есть проблемы с блокировкой всплывающих окон, которые отображаются в Facebook JS SDK. После чтения документации я понимаю, что вызов JS SDK должен быть после щелчка пользователя. Этот код работает правильно и браузер не блокирует всплывающие окна:Предотвращение блокировки всплывающих окон, которые появляются в facebook SDK
function Login() {
FB.login(function (response) {
if (response.authResponse) {
DoSmth(response.authResponse.accessToken);
}
}, { scope:'user_birthday, publish_stream' });
}
Но если я буду использовать этот код в любом месте (для постфактум к стене, получить данные пользователя.), Всплывающее окно будет отображаться во всех случаях , даже если пользователь уже вошел в систему в facebook. Я считаю, это не нормально.
Чтобы определить, что пользователь уже вошел в систему, я использую этот код:
function CheckOrLogin() {
FB.getLoginStatus(function (response) {
if (response.status === 'connected') {
DoSmth(response.authResponse.accessToken);
}
else {
FB.login(function (response) {
if (response.authResponse) {
DoSmth(response.authResponse.accessToken);
}
}, { scope:'user_birthday, publish_stream' });
}
}, true);
}
В этом случае всплывающее окно не будет отображаться, если пользователь уже вошел в систему Но если пользователь не вошел в фейсбуке. , это условие (if (response.status ===) возвращает false. И браузер будет BLOCK всплывающее окно, которое будет показано FB.login. Есть ли способ предотвратить это?
У меня такая же проблема: / – Multitut