1

私の 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 はそのようには機能しません。

よろしくお願いいたします。

4

0 に答える 0