FB не определен в Facebook Войти - PullRequest
       34

FB не определен в Facebook Войти

6 голосов
/ 01 февраля 2012

У меня есть следующий код, но FB.login дает FB не определена ошибка JavaScript.

Чего мне не хватает?

<html>
<body>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function()
{
FB.init
({
    appId   :   'XXXX',
    status :    true,
    cookie :    true,
    xfbml   :   true
});
};

(function()
{
var e = document.createElement('script');
e.src = document.location.protocol +  '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());



FB.login(function(response)
{
if(response.session)
{
    if(response.perms)
    {
        alert('yippee');
    }
    else
    {
        alert('oh no');
    }
}
else
{
    alert('login silly');
}
}, {perms:'email,user_birthday'});


</script>
hello
<fb:login-button></fb:login>

</body>
</html>

Ответы [ 3 ]

7 голосов
/ 01 февраля 2012

Функция, назначенная для window.fbAsyncInit, запускается сразу после загрузки SDK.Любой код, который вы хотите запустить после загрузки SDK, должен быть помещен в эту функцию и после вызова FB.init.Например, именно здесь вы должны проверить статус пользователя, вошедшего в систему, или подписаться на любые события Facebook, в которых заинтересовано ваше приложение.

Попробуйте сохранить другой код инициализации между инициализацией и функцией входа в систему

Или сохраните код FB.login в $ (документ) .ready

$(document).ready(function(){

FB.login(function(response)
{
if(response.session)
{
    if(response.perms)
    {
        alert('yippee');
    }
    else
    {
        alert('oh no');
    }
}
else
{
    alert('login silly');
}
}, {perms:'email,user_birthday'});

});
6 голосов
/ 01 февраля 2012

Вы не должны звонить на FB.login до загрузки JS-SDK, window.fbAsyncInit разработан специально для этого. Если вы переместите этот вызов в функцию window.fbAsyncInit, все будет в порядке, но вы должны знать, что при вызове FB.login открывается всплывающее окно, при этом выполнение этого без взаимодействия с пользователем будет, вероятно, заблокировано большинством браузеров. Если вы хотите использовать FB.login для обработки входа в систему, вы должны сделать это для click или sumbit событий ...

Кстати, у вас уже есть fb:login-button, который делает логин, когда пользователь нажимает на него.

1 голос
/ 18 декабря 2014

Вы также можете получить эту ошибку, если попытаетесь запустить пример кода facebook на своем компьютере (например, скопировать код в файл .html и попытаться открыть его в браузере). Вам нужно будет загрузить это на свой сервер и запустить оттуда.

...