Facebook Connect isUserConnected関数がjQueryで2回実行されるのを防ぐにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/613612

  •  03-07-2019
  •  | 
  •  

質問

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

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

問題:

Facebook関数は2回実行されます。この問題に関するメッセージボードにはコメントがありますが、これは接続の開始以来の問題であり、解決されていないようです。

だから、Facebookを待ちたくありません。関数が複数回関数を呼び出すのを防ぐ方法はありますか?

「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);
}

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top