我成功将FBConnect集成到我的应用程序中。连接和注册页面工作正常。
但是有一段时间,当我点击Facebook按钮时,我绑定的事件不再被提升。
<script src="http://connect.facebook.net/fr_FR/all.js" ></script>
<script type="text/javascript">
//console integration
if(typeof console !== 'object')
console = {};
if((typeof console.debug) !== 'function'){
if(typeof opera === 'object'){
console = {
debug : function(){return opera.postError(arguments);},
info : function(){this.debug('[INFO] ',arguments);},
log : function(){this.debug('[LOG] ',arguments);}
};
}
else{
console = {
debug : function(){return true;},
info : function(){return true;},
log : function(){return true;}
};
}
}
/**
* Fonction called to init and manage FB Connection
*/
handleFacebook();
$('#fb-button').click(function(){
alert('ok');
fbGetLoginStatus();
});
/**
*
*/
function handleFacebook() {
if(!window.fbApiInit) {
FB.init({appId: 'myAppId', xfbml: true, cookie: true});
fbApiInit = true;
}
}
function fbGetLoginStatus() {
FB.getLoginStatus(function(response) {
onStatus(response); // once on page load
FB.Event.subscribe('auth.statusChange', onStatus); // every status change
});
}
/**
* This will be called once on page load, and every time the status changes.
*/
function onStatus(response) {
console.info('onStatus', response);
if (response.status == 'connected') {
console.info('User logged in');
if (response.perms) {
console.info('User granted permissions');
}else{
console.info('User has not granted permissions');
}
getAccountInfo();
} else {
console.info('User is logged out');
}
}
/**
* This assumes the user is logged out, and renders a login button.
*/
function showLoginButton() {
var button = '<fb:login-button perms="email" />';
$('#fb-login-button').html(button);
FB.XFBML.parse(document.getElementById('fb-login-button'));
}
function getAccountInfo() {
FB.api(
{
method: 'fql.query',
query: 'SELECT username, first_name, last_name, uid, email, sex FROM user WHERE uid='+FB.getUserID()
},
function(response) {
console.info('API Callback', response);
var user = response[0];
$('#usernamefb').val(user.username);
$('#mailfb').val(user.email);
$('#facebook-connect-form').submit();
}
);
}
</script>
<div id="fb-login-button">
<fb:login-button perms="email" id="fb-button" />
</div>
<form method="post" action="/facebook-connect" id="facebook-connect-form">
<input type="hidden" id="usernamefb" name="usernamefb"/>
<input type="hidden" id="mailfb" name="mailfb"/>
</form>
我注意到 $('#fb-button')中的 alert 函数。单击事件从不被调用。 它没有显示在这里,但我在我的文件中包含jQuery库upper。 有什么想法吗?
感谢您的回答。
答案 0 :(得分:0)
Facebook改变了他们的按钮,我没有找到一种方法在更改后将点击事件绑定到它。
我将网站更改为订阅加载时的FB事件。 初始化FB时,您必须设置Option&#34; status&#34;为false以防止在init上自动执行Loginstatus-Check!
function fbInit() {
window.fbAsyncInit = function () {
FB.init({
appId: 'XXX',
status: false,
cookie: true,
xfbml: true
});
//auth.statusChange
FB.Event.subscribe('auth.authResponseChange', function (response) {
if (response.status.indexOf('connected') != -1) {
// the user is logged in and has authenticated your
// app, and response.authResponse supplies
// the user's ID, a valid access token, a signed
// request, and the time the access token
// and signed request each expire
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
//Handle the access token
jQuery.ajax({
url: 'token_handler.ashx',
type: 'POST',
data: "accessToken=" + accessToken,
success: function (msg) {
}
});
} else if (response.status.indexOf('not_authorized') != -1) {
// the user is logged in to Facebook,
// but has not authenticated your app
} else {
// the user isn't logged in to Facebook.
}
});
};
(function (d) {
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) { return; }
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
} (document));
}