私の Web プラットフォームでは、Facebook のlikeboxをユーザーに表示しています。
いいねボックスのいいねボタンをクリックした後、ユーザーがいつ Facebook にログインしたかを知る必要があります。
イベントauth.statusChangeおよびauth.authResponseChange (ドキュメントで推奨) でFB.Event.subscribe関数を使用してそうしようとしましたが、成功しませんでした。
これは私が使用するコードの例です:
/* Just to wait facebook functions are ready */
var handle = setInterval(function() {
if(typeof(FB) != 'undefined'){
fbReady();
clearInterval(handle);
}
}, 1000);
/* Get connection status */
function fbReady() {
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
status == "connected";
} else if (response.status === 'not_authorized') {
status == "not_authorized";
} else {
status == "unknown";
}
/* I don't use status yet */
setSubscriptions(status);
});
}
/* set event listeners for login and liked */
function setSubscriptions(status){
/* Like event subscription */
FB.Event.subscribe('edge.create',
function(response) {
alert('user liked the page');
});
/* status change event subscription */
FB.Event.subscribe('auth.statusChange',
function(response) {
alert('user status is changed in:' + response.status);
});
/* auth response change event subscription */
FB.Event.subscribe('auth.authResponseChange',
function(response) {
alert('user auth response is changed in:' + response.status);
});
}
いいねボタンが押されたときにedge.createイベントのみが関連するコールバックを起動しますが、ユーザーがログインしても何も起こりません。
ログインしたユーザーのステータスが接続済み(Facebook 設定で私のアプリを受け入れた) またはnot_authorizedの場合、状況は変わりません。
JsFiddle にインタラクティブなコードを提供しようとしましたが、Facebook js sdk はそのようには機能しません。
よろしくお願いいたします。