FB Войти всплывающее окно

Вы можете сначала fill массив с любым значением (например, undefined), а затем вы сможете использовать map:

var arr = new Array(2).fill().map(u => ({}));
var arr = new Array(2).fill().map(Object);
29
задан rene 23 July 2015 в 06:10
поделиться

4 ответа

Вы не можете позвонить FB.login из-за обратного вызова из FB.getLoginStatus.

Браузеры, как правило, блокируют всплывающие окна, когда всплывающее окно не порождается как непосредственный результат действия пользователя, щелкающего мышью.

Поскольку FB.getLoginStatus выполняет вызов ajax, а вы отвечаете FB.login на его ответ, всплывающее окно, которое открывается в результате этого вызова, заблокировано .

Решением вашей проблемы будет вызов FB.getLoginStatus при загрузке страницы и использование ответа внутри вашего метода fb_login().

55
ответ дан Mohammad Faisal 23 July 2015 в 06:10
поделиться

Совершенно нормально звонить FB.login с помощью обратного вызова FB.getLoginStatus, если вы уверены, что статус входа в систему уже был загружен внутри страны. Для этого воспользуйтесь одним из них:

  • FB.init({..., status: true, ... }).
  • FB.getLoginStatus(...)
  • FB.login(...)
  • FB.ui(...)

Технически все эти опции используют FB.ui. Асинхронный процесс должен завершиться, что может занять несколько секунд. До тех пор, пока вы уже использовали один из методов выше, чтобы сделать междоменный вызов с FB, и этот асинхронный процесс завершен, получение статуса входа в систему не сделает асинхронный вызов, и всплывающее окно не будет заблокировано. ]

Также следует убедиться, что не указывает true для второго параметра, как в FB.getLoginStatus(..., true);.

40
ответ дан AndrewF 23 July 2015 в 06:10
поделиться

Убедитесь, что вы установили status на true , это исправит проблему блокировки всплывающих окон.

window.fbAsyncInit = function() {
  FB.init({
    appId      : '{your-app-id}',
    cookie     : true,  // enable cookies to allow the server to access 
                        // the session
    xfbml      : true,  // parse social plugins on this page
    version    : 'v2.5', // use graph api version 2.5
    status     : true // set this status to true, this will fixed popup blocker issue
  });
12
ответ дан Rusly - Mices 23 July 2015 в 06:10
поделиться

У меня была такая же проблема, и она била меня по голове в течение 3 дней. Я наткнулся на вышеупомянутые решения, и они работали в Firefox и Edge, но в Chrome, независимо от того, что я делал, я все еще был заблокирован влево и вправо. Другая проблема была, когда я вызывал функцию из события нажатия кнопки в диалоге входа не был заблокирован, но не получил никаких ответов после закрытия диалогового окна входа в систему для дальнейших действий, поэтому я застрял. Таким образом, мое решение заключается в следующем, но вам не нужно нажимать кнопку входа в систему, она будет перенаправлена ​​на страницу входа в FB без события нажатия кнопки, а при возврате продолжите все остальные шаги SDK. Просто добавьте это в свой код и посмотрите, поможет ли это, отрегулируйте его в соответствии с вашими потребностями

function statusChangeCallback(response) {
            console.log('statusChangeCallback');
            console.log(response);


            // The response object is returned with a status field that lets the
            // app know the current login status of the person.
            // Full docs on the response object can be found in the documentation
            // for FB.getLoginStatus().
            if (response.status === 'connected') {
                // Logged into your app and Facebook.
                document.getElementById('Image2').style.display = "none";
                document.getElementById('mail').style.display = "in-line";

                testAPI();
            } else {
                // The person is not logged into your app or we are unable to tell.
                window.alert("Faça login no facebook antes de continuar - Obrigado");
                window.location.href = 'https://www.facebook.com/dialog/oauth' +
                '?client_id=55215442252214521548' +
                '&scope=public_profile,email,user_friends' +
                '&redirect_uri=' + encodeURIComponent(document.URL);
                document.getElementById('Image2').style.visibility = "hidden";
                document.getElementById('mail').style.display = "in-line";

            }
        }

        // This function is called when someone finishes with the Login
        // Button.  See the onlogin handler attached to it in the sample
        // code below.
        function checkLoginState() {
            FB.getLoginStatus(function (response) {
                statusChangeCallback(response);

            });
        } 
0
ответ дан Marcos J.D Junior 23 July 2015 в 06:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: