1

ボタンクリックイベントから、FacebookJSSDKのFB.getLoginStatusを呼び出しています。私の問題は、ステータスパラメータがtrueに設定されている場合、ブラウザのポップアップブロッカーがトリガーされ、ログインダイアログが表示されないことです。ただし、ステータスがfalseの場合、ポップアップブロッカーがトリガーされません。ユーザーがページを更新せずにFacebookにログインしているかどうかをサイトが知る必要があるので、ステータスをtrueにする必要があります。Falseパラメータ値は、FBがキャッシュされたログインステータスを取得することを意味します。これは、ユーザーがサイトにいる間にFacebookからログアウトした場合に間違っている可能性があります。

どうすればこれを回避できますか?

ここに問題を説明するいくつかのコードがあります

 $('.my-button').click(function () {

            FB.getLoginStatus(function (response) {

                if (response.status != 'connected') {

                    FB.login(function (r) {
                        if (r.status == 'connected') {
                            alert('logged in');
                        }
                    });
                }

            }, true);

        });
4

1 に答える 1

1

これはおそらく、forceCheck を getLoginStatus に渡すと、コールバックが非同期で呼び出され、「クリック」イベントとの接続が切断されるためです。ブラウザまたはポップアップ ブロッカーは、コール スタックでユーザーが開始したクリック イベントを見つけることができないため、ポップアップをブロックします。私は現在、同じ問題に悩まされています。

オプション:

1) FB.login を直接呼び出します。

短所: ログインしているユーザーでも見苦しいポップアップ フラッシュ。

2) ユーザーがログインしていない (またはアプリが認証されていない) ことを getLoginStatus で検出したら、別のログイン ボタンを $('.my-button') の近くに挿入します。 Facebookに接続するためのログインボタン。その 2 番目のボタンのクリック ハンドラーで、FB.login() を直接呼び出します。

不利な点: -50 からコンバージョン率

2)を試して結果を報告します。

于 2013-02-17T18:16:39.033 に答える