0

これが私の質問のもう 1 つです。解決策は示されていますが、答えはありません。

本当に簡単です。ページに OAuth ダイアログを表示したい。このページは、Facebook タブまたはスタンドアロンの両方にすることができます。私が答えを探したほとんどの場所ではFB.login()、「ボタンのクリックなど」などのユーザーアクションに応じて関数を呼び出す必要があると言われています。そうしないと、OAuth ダイアログのポップアップがブラウザによってブロックされる危険があります。そして、それはまさに私がやっていることです。でも...

「クリック」イベントハンドラーが属性値、AttachEvent、または使用するもの(私はjQuery.bind()を使用)を介してボタン/何でもにアタッチされている場合、FBをクリックしたときにその保証はありません誰もが非同期でロードすることを推奨しているため、API は完全にロードされています。これが、API をロードするコードでイベントをトリガーし、そのハンドラーで実際に「ボタン」「クリック」ハンドラーをバインドする理由です。次に、ユーザーが「ボタン」をクリックすると、イベントが自然に発生し、ハンドラーが実行され、OAuth ダイアログが開かれ、ブロックされます。お願いします。誰。私は何を間違っていますか?気をつけてください、私解決策を探しています。ただし、(リダイレクトではなく) ダイアログを介して行う必要があり、API を非同期で読み込む必要があります。ここにいくつかのコードがあります...

直前</head>

window.fbAsyncInit = function () {
        FB.init({
            "status":true,
            "cookie":true,
            "xfbml":true,
            oauth:true,
            "appId":"12345678987654321"
        });
    FB.Canvas.setAutoGrow();
    jQuery(document).trigger("fb-ready");
};

(function (d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if(d.getElementById(id)) {return;}
    js = d.createElement(s)
    js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=398161863536524";
    fjs.parentNode.insertBefore(js, fjs);
}(document, "script", "facebook-jssdk"))

</div>クリックするの直後:

jQuery(document).bind("fb-ready", function() {
    jQuery("#btn-do-that-stuff").bind("click", function() {
        if( !FB ) { return false; }
        FB.login();
    });
});

これを説明し、同時に理にかなっているすべての人に前もって感謝します。上記の基準を尊重して、これを解決する方法を教えてくれるすべての人に感謝します。

4

0 に答える 0