1

私はこのボタンを持っています:

<img src="static/img/facebook_button.png" id="login-fb" onclick="login();" />

私もこのスクリプトを持っています:

window.fbAsyncInit = function(){
    FB.init({
        appId : 'MY_APP_ID',
        status : true,
        cookie : true,
        xfbml : false
    });
};

最後に、私はこの機能を持っています:

function login()
{
    facebookPerms = [
        'user_photos', 'email', 'offline_access', 'user_relationships', 'read_stream',
        'user_about_me', 'user_birthday', 'user_education_history', //'publish_stream',
        'user_hometown', 'user_interests', 'user_location', 'user_likes',
        'user_religion_politics', 'user_activities', 'user_work_history'
    ];
    //Get the facebook login status
    FB.getLoginStatus(function(response) {
        if (response.session) {
            // logged in and connected user, someone you know
            ajaxLogin();
        } else {
            //Display the facebook login dialog
            FB.login(function(response) {
                if (response.authResponse) {
                    // user is logged in and granted some permissions.
                    // perms is a comma separated list of granted permissions
                    ajaxLogin();
                } else {
                    // user is not logged in, display the error dialog box
                    errorNotLogged();
                }
            }, {
                //Ask for permissions of Facebook
                scope: facebookPerms.join(',')
            });
        }
    });
}

私はこのFacebookのルールに従っています:

FB.login を呼び出すと、JS SDK がポップアップ ウィンドウを開こうとします。そのため、このメソッドはユーザーのクリック イベントの後にのみ呼び出す必要があります。そうしないと、ほとんどのブラウザーでポップアップ ウィンドウがブロックされます。

そして、私の Web サイトは依然として IE9 で Facebook ポップアップがブロックされます。これを解決する方法はありますか?他の人がスクリプトをブロックせずにこれを行う方法はありますか?

4

1 に答える 1

6

次のことを試してください。

  • ユーザーのログイン状態を取得します。
  • ユーザーがログインしていない場合は、ログイン ボタンを表示します。
  • クリックすると、FB.login 関数が直接呼び出されます。

あなたの実装では、FB.login はユーザー インタラクションの直後に呼び出されるのではなく、FB.getLoginStatus のコールバック関数の一部として呼び出されます。これにより、IEがポップアップをブロックすると思います。

于 2012-06-22T12:50:37.297 に答える