A возникли проблемы с блокировкой всплывающих окон, которые отображаются в Facebook JS SDK.После прочтения документации я понимаю, что вызов JS 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);
}
В этом случае всплывающее окно не будет отображаться, если пользователь уже вошел в систему. Но если пользователь не вошел в Facebook, это условие (if (response.status ===) возвращает false. И браузер будет иметь всплывающее окно BLOCK , которое будет показано FB.login.Есть ли способ предотвратить это?