我正在尝试在我的网站上启用javascript facebook登录,并且我一直收到一个javascript错误,说FB没有定义。我完全按照facebook上的开发指南进行操作,我不相信fbasyncinit实际上正在工作。
https://developers.facebook.com/docs/javascript/quickstart
我的初始化代码直接在我的布局页面中打开。
<script>
window.fbAsyncInit = function ()
{
FB.init(
{
appId : 'xxxxxxxxx',
autoLogAppEvents : true,
xfbml : true,
version : 'v3.0'
});
$(document).ready(function ()
{
$(document.body).on('click', '#facebook-login', function ()
{
FB.getLoginStatus(function (response)
{
alert(response);
});
});
});
};
(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 = "https://connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
当我点击我的#facebook-登录按钮时,它会点击FB.getLoginStatus(),但随后会抛出&#34; JavaScript运行时错误:&#39; FB&#39;未定义&#34;。我正在我的本地计算机上进行调试,但我已经尝试将此代码推送到具有外部IP的开发计算机,我已经将我的fbook开发人员应用程序URL更改为该URL但它仍然无法正常工作。
我发现的所有谷歌搜索结果都来自多年前,根本没有帮助。
**更新1 ** 我试着把这个ajax调用放在我的document.ready中,它总是失败。那么问题可能在于检索SDK的URL?我使用和不使用&#34; https:&#34;
尝试了网址$.ajax(
{
url: '//connect.facebook.net/en_US/sdk.js',
dataType: 'script',
cache: true,
success:function(script, textStatus, jqXHR)
{
FB.init(
{
appId : 'xxxxxxxxxx',
xfbml : true,
version : 'v3.0'
});
FB.getLoginStatus(updateStatusCallback);
},
error:function(){ alert("Failed")}
});