0

Я пытаюсь сделать следующую простую интеграцию facebook:Я не в состоянии getLoginStatus

Я просто хочу, чтобы прочитать ранее уполномоченный статус приложения, либо подключенный или не санкционировано я хочу иметь дело с результатом.

Но я получаю ошибку FB.getLoginStatus() called before calling FB.init(). Что имеет смысл, если .init не закончил, а я позвонил getLoginStatus.

Как решить эту проблему без необходимости добавления асинхронной динамической ссылки js?

<script language="javascript"> 
    $(document).ready(function() { 

     window.fbAsyncInit = function() { 
      FB.init({ 
       appId: 'myappid', // App ID 
       status: true, // check login status 
       cookie: true, // enable cookies to allow the server to access the session 
       xfbml: true // parse XFBML 
      }); 
     }; 


     FB.getLoginStatus(function (response) { 
      alert(response.status); 
      if (response.status == "connected") { 
       $("#lkLogin").css("display", "none"); 
       $("#spUser").css("display", "inline"); 

       $("#spUser").html(response.name); 

      } else if (response.status == "not_authorized") { 
       $("#lkLogin").css("display", "inline"); 
       $("#spUser").css("display", "none"); 
      } 
     }); 

    }); 
</script> 

<a href="#" id="lkLogin" style="display:inline;">Facebook Login</a> 
<span id="spUser" style="display:none;"></span> 

ответ

-2

Это следует сделать это:

<script language="javascript"> 


      window.fbAsyncInit = function() { 
       FB.init({ 
        appId: 'myappid', // App ID 
        status: true, // check login status 
        cookie: true, // enable cookies to allow the server to access the session 
        xfbml: true // parse XFBML 
       }); 
      }; 

    $(document).ready(function() { 
      FB.getLoginStatus(function (response) { 
       alert(response.status); 
       if (response.status == "connected") { 
        $("#lkLogin").css("display", "none"); 
        $("#spUser").css("display", "inline"); 

        $("#spUser").html(response.name); 

       } else if (response.status == "not_authorized") { 
        $("#lkLogin").css("display", "inline"); 
        $("#spUser").css("display", "none"); 
       } 
      }); 

     }); 
    </script> 

    <a href="#" id="lkLogin" style="display:inline;">Facebook Login</a> 
    <span id="spUser" style="display:none;"></span> 
+0

это не имеет никакого смысла – RollRoll

+0

Если 'FB.init()' находится за пределами '$ (документ) .ready' он будет называться первым. Затем методы FB можно использовать где угодно, а не только в функции 'fbAsyncInit'. – chrisboustead

0

Вы должны вызвать функцию FB.getLoginStatus() только после того, как вы назвали FB.init(); поскольку init() называется asynch. Итак, что происходит, FB не инициализируется до вызова getLoginstatus(); следовательно, вы должны назвать его синхронизироваться как this-

window.fbAsyncInit = function() { 
    FB.init({ 
     appId: 'myappid', // App ID 
     status: true, // check login status 
     cookie: true, // enable cookies to allow the server to access the session 
     xfbml: true // parse XFBML 
    }); 

    // call FB.getloginstatus function here 
};