2012-01-28 6 views
0

У меня возникла проблема с ответом от кнопки входа в facebook. И будет очень благодарен за любую мгновенную помощь. Я использую следующий код:Получение ответа от кнопки входа в facebook

<div id="fb-root"></div> 
<script>(function(d, s, id) { 
var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=MY_APP_ID"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 
</script> 

<div class="fb-login-button" data-show-faces="false" data-width="200" data-max-rows="1"></div> 

<script type="text/javascript"> 
FB.Event.subscribe('auth.authResponseChange', function(response) { 
    if(response.status=="connected") 
    { 
     document.getElementById("fblogin").value=response.authResponse.userID; 
    } 

}); 
</script> 

... но я получаю ошибку в моей консоли JavaScript: «FB не fefined» и не предупредительное сообщение для Идент responeId не получил мне.

Пожалуйста, помогите его очень важный

ответ

-1

загружаемой фейсбук яваскрипта SDK асинхронно через следующий код

<div id="fb-root"></div> 
<script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; 

    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=MY_APP_ID"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 
</script> 

Итак, ваш FB не определен, пока он не загружается.

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

<script src="//connect.facebook.net/en_US/all.js"></script> 
<script> 
    FB.init({ 
    appId  : 'YOUR_APP_ID', 
    status  : true, // check login status 
    cookie  : true, // enable cookies to allow the server to access the session 
    xfbml  : true // parse XFBML 
    }); 
</script> 
1

Или, если вы хотите, чтобы все-таки загрузить стиль асинхронного JS SDK, вы можете подключить свои обработчики событий в window.FbAsyncInit(), как например:

window.fbAsyncInit = function() { 
     FB.init({ 
      appId  : 'YOUR_APP_ID', // App ID 
      channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File 
      status  : true, // check login status 
      cookie  : true, // enable cookies to allow the server to access the session 
      xfbml  : true // parse XFBML 
     }); 

     // Additional initialization code here 
     FB.Event.subscribe('auth.authResponseChange', function(response) { 
      if(response.status=="connected") 
      { 
      document.getElementById("fblogin").value=response.authResponse.userID; 
      } 
     }); 

    }; 

<script> 

(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; 

    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=MY_APP_ID"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 
</script> 
<div class="fb-login-button" data-show-faces="false" data-width="200" data-max-rows="1"> 
    </div> 
<script type="text/javascript"> 

FB.Event.subscribe('auth.authResponseChange', function(response) { 
    if(response.status=="connected") 
    { 
     document.getElementById("fblogin").value=response.authResponse.userID; 
    } 

}); 

</script> 

Этот стиль (который является предпочтительным для Facebook) оформлен здесь: https://developers.facebook.com/docs/reference/javascript/

Смежные вопросы