javascript - Facebook SDK 未初始化
问题描述
我正在尝试在我的网站上启用 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-login 按钮时,它会点击 FB.getLoginStatus() 但总是抛出“JavaScript 运行时错误:'FB' 未定义”。我正在本地机器上调试,但我尝试将此代码推送到具有外部 IP 的开发机器,我已将我的 fbook 开发人员应用程序 url 更改为该 url,但它仍然无法正常工作。
我发现的所有谷歌结果都是多年前的,根本没有帮助。
** 更新 1 ** 我尝试将此 ajax 调用放入我的 document.ready 中,但它总是失败。那么问题可能出在用于检索 SDK 的 url 上?我尝试了带有和不带有“https:”的网址
$.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")}
});
解决方案
javascript SDK 被我工作网络上的代理阻止。我能够从我的手机(不在网络上)登录。但是当我将 sdk 的 url 放在浏览器中时,我通过查看网络流量发现了这一点。
推荐阅读
- android - Understanding the parts of a kotlin function
- django - 如何使用文件路径从 django 视图上传文件
- python - CSV 文件不存在(Ubuntu 子系统)
- angular - 离子移动应用程序中的全局回调函数
- c++ - 模板 ID 不匹配任何模板声明 GNU gcc 编译器
- html - 使用 v-for 上的循环值来设置条件类
- regex - 有没有办法使用 XPath 解析这个 HTML 代码中的值?
- protocol-buffers - 从 bazel 中的 http_archive 获取 proto 源
- mysql - 在 MySQL 中对不同值执行 GROUP BY 时如何根据 MAX 值选择列
- python-3.x - 如何从numpy数组中删除元素对?