0

Facebookの統合に少し問題があります。

ユーザーがリンクをクリックすると、ユーザーがFacebookにログインしているかどうかをチェックする関数があります。ログインしていない場合は、データを設定してから、Facebookのログイン情報を実行します。Facebookがログインを返したら、保存されているデータを確認して、選択した元の機能を実行します。

問題:

Facebook関数は2回実行されます。この問題について彼らの掲示板にいくつかのコメントがありますが、これは接続の開始以来の問題であるようであり、対処されていません。

だから、Facebookを待ちたくない。関数が関数を複数回呼び出さないようにする方法はありますか?

「一度実行する」というものを設定できますか?問題は、一度実行すると、ユーザーがもう一度クリックすると、もう一度実行する必要があるため、機能を完全に無効にできないことです(それが可能であったとしても)。

4

1 に答える 1

1

これはかなりハックっぽいですが、Facebook が関数を 2 回呼び出すという問題を回避する必要があります。コードがないので、ソリューションの目的でいくつか作成します。また、Facebook のログイン コードにはコールバックがあると想定しています (関数を 2 回呼び出すにはどうすればよいでしょうか?)。

// This function is what is called when the link is clicked
// funToRun - the function that should be run after login is confirmed.
// params - parameters to pass to fToRun, as an array
clickWrapper = function(funToRun, params)
{
    // Keeps track of the state of the click
    var doFunction = true;

    var callback = function()
    {
        if (doFunction)
        {
            funToRun.apply(this, params);
            doFunction = false;
        }
    }

    // The facebook 
    facebookLogin(callback);
}

このソリューションでは、実行したい関数を 1 回だけ実行するコールバックでラップしています。ただし、doFunction はローカルで管理されているため、ユーザーがクリックするたびに少なくとも 1 回実行されます (したがって、クリックごとに 1 回 true になります)。

于 2009-03-05T05:24:43.070 に答える