0

Facebook のログイン/登録プラグインを自分の Web ページに含めようとしています。ログインをクリックするかログアウトをクリックするたびに、対応するFB.Event.subscribeがトリガーされます。しかし、私の場合、ログインとログアウトは正常に行われます。しかし、これらのイベントはいずれもトリガーされません。コードの下にある、

<div id="fb-root"></div>
window.fbAsyncInit = function(){
    FB.init({
        appId   : 'xxxxxxxxxxxxxxxxxxxx',
        status  : true,
        cookie  : true,
        oauth   : true,
        xfbml   : true 
    });

    FB.Event.subscribe('auth.login', function(response) {
        FB.api('/me', function(response) {
        alert('You have successfully logged in, '+response.name+"!");
        });
    });     

    FB.Event.subscribe('auth.logout', function(response) {
        FB.api('/me', function(response) {
            alert('You have successfully logged out, '+response.name+"!");
        });
    });

    FB.getLoginStatus(function(response) {
        if (response.session) {
            alert('Hello');
        }
    });
};

(function() {
    var e = document.createElement('script');
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
}());

誰かがここで私を助けてくれたら、それは素晴らしいことです. 前もって感謝します。

4

1 に答える 1

0

これらのイベントは、ユーザー ステータスが変更された場合にのみトリガーされます。

たとえばauth.login、この変更は、ユーザーがまだページを承認しておらず、承認を与えた場合に発生します。この最初の時点で、ユーザーはあなたのページの Facebook Cookie の値を持っていません。ユーザーがページを承認すると、Cookie の値が FB JS SDK によって書き込まれ、スクリプトがauth.login変更イベントを感知します。次回、ユーザーが再び戻ってきたとき、Cookie の値は既にそこにあるはずであり、ステータスの変更がないため、イベントはトリガーされません。

このauth.loginイベントは、ユーザーが既にアプリを承認しているが、Cookie をクリーンアップした場合にもトリガーされます。次回のアクセスでは、FB JS SDK が再度 Cookie を書き込む必要があり、イベントが発生します。

使用していないため、イベントについてはauth.logoutわかりませんが、私が知る限り、アプリとは関係ありませんが、ユーザーの Facebook アカウントのセッション ステータスとは関係ありません。

イベントがいつ発生するかをよりよく理解するために、スクリプトの実行中にページの Cookie 値の変化を監視することをお勧めします。

于 2012-08-13T15:55:07.447 に答える