Facebook javascript事件不触发任何方式我把它
Facebook javascript events not fired any way i turn it
我使用Facebook JavaScript SDK与我的网站,有一个选项那里设置事件,当用户登录/注销从Facebook,所以我可以显示他在我的网站通知。无法管理它工作,尝试了所有方法,也使用offline_access权限。
下面是我的HTML代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="blabla" />
<meta name="keywords" content="blabla" />
<meta property="og:title" content="blabla" />
<meta property="og:url" content="http://XXX/" />
<meta property="fb:app_id" content="XXX" />
<title>Facebook Notifier</title>
<link href="<?php echo base_url(); ?>styles/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript" src="<?php echo base_url(); ?>js/jquery.cookie.js"></script>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript" src="<?php echo base_url(); ?>js/global.js"></script>
</head>
<body>
<div id="fb-root"></div>
<div id="my_div">
</div>
</a>
</body></html>
这是我的js代码:
FB.init({
appId : 'XXX',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
oauth : true, // enables OAuth 2.0
channelUrl : 'http://XXX/channelUrl'
});
FB.getLoginStatus(function(response) {
if (response.authResponse) {
connected = true;
}
else{
connected = false;
}
}, true);
FB.Event.subscribe('auth.authResponseChange', function(response) {
if(response.authResponse) connected = true;
else connected = false;
});
在这个js代码的末尾,我有一个函数,每隔几秒钟运行检查连接变量,它是一个全局的。它没有改变,我试图从facebook登录/注销,没有事件火灾。只有当我刷新页面时,我才能获得用户状态。在firefox firebug控制台,我得到的消息(也尝试在chrome, ie):未捕获的异常:错误:https://www.facebook.com代理。InstallTrigger 我试图通过尽我所能在谷歌和stackoverflow中找到这个错误来解决这个问题,但仍然不起作用。顺便说一句:当我在原始文件中写XXX时,它是我的url或我的appid。谢谢。
我一直对Facebook触发的auth.
事件有点怀疑,所以在您的情况下,我可能只是自己设置一个轮询器来检查连接用户的身份验证状态。这样的:
var connected;
FB.init({
appId : 'XXX',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
oauth : true, // enables OAuth 2.0
channelUrl : 'http://XXX/channelUrl'
});
FB.getLoginStatus(handleUserStateChange);
FB.Event.subscribe('auth.authResponseChange', handleUserStateChange);
function handleUserStateChange(response) {
connected = !!response.authResponse;
}
setInterval(function() {
FB.getLoginStatus(handleUserStateChange, true);
}, 10000) // poll every 10 seconds
FB.init
配置对象中定义status: true
时,您不需要在开始时将第二个参数传递给FB.getLoginStatus
,因为这会强制检查Facebook而不是从存储的变量中读取(这已经是我们刚刚initd的最新信息)。
看起来你的connected
可能有变量作用域问题。
这样做可能会有帮助:
var connected; // define/initialize connected variable outside functions
FB.init({
appId : 'XXX',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
oauth : true, // enables OAuth 2.0
channelUrl : 'http://XXX/channelUrl'
});
FB.getLoginStatus(function(response) {
if (response.authResponse) {
connected = true;
}
else{
connected = false;
}
}, true);
FB.Event.subscribe('auth.authResponseChange', function(response) {
if(response.authResponse) connected = true;
else connected = false;
});
我会使用console.log()
从你的函数响应订阅的事件,看看什么是真正发生(或不发生)。然后根据console.log()
告诉您的内容编写实际代码。
我在一个函数中做FB.Event.subscribe
,该函数在文档准备事件上调用:
<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_US/all.js#xfbml=1&appId=...";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
$("document").ready(function(){
FB.Event.subscribe('edge.create',
function(response) {
alert('You liked the URL: ' + response);
});
});
</script>
或者这里有另一个例子,确保在执行任何调用之前初始化FB
我是FB开发的新手,几天前遇到了同样的问题。
我尝试了几乎所有的答案和解决方案,但没有工作了。不管我在我的最新的VS项目。然而,我记得在我的第一个VS项目中得到了这个工作在那里我学习了一个关于同样问题的教程。过了一段时间,我检查了最初的项目,令我惊讶的是,它在那里启动了,而在另一个项目中没有。
最后我意识到FB上的Canvas Url(应用程序设置)是罪魁祸首:H t t p://localhost:15497/它被设置为我的本地主机,端口在我的其他项目中使用。我更改了端口号,突然它也在我的其他项目中工作。
确保FB应用程序设置中的画布url与您的Visual Studio运行应用程序的位置匹配。同时在部署web应用程序后更改该值。
如果你在2022年想知道为什么它不会发射。启用第三方cookie,这对我很有效。
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 事件和状态
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- 从控制器返回后Ajax启动事件激发
- 如何从画布上的某个移动事件中获取X和Y
- Jquery:未触发select事件
- JsFiddle上的鼠标事件不起作用
- 只覆盖箭头键滚动事件
- $window.ga在AngularJS事件中未定义
- cron作业与Javascript计时事件
- ng更改事件不适用于Dropdown