アプリケーションに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')。clickイベントのアラート関数が呼び出されないことに気付きました。ここには示されていませんが、ファイルの上位にjQueryライブラリを含めています。何か案が ?
回答ありがとうございます。