IE中的Facebook权限导致无限的facebook循环

时间:2011-04-12 19:04:08

标签: javascript html internet-explorer-8 facebook-javascript-sdk

我正在尝试获取我正在制作的Facebook应用程序的权限,但每次我尝试在IE8中运行该应用程序时,我都无法显示权限框。我已经在firefox中测试了应用程序,它可以打开很好,并获得所有权限(我不要求任何特殊的权限)。

当我在IE8中运行调试器时,我看到一旦程序命中FB.getLoginStatus(function (response) {(参见下面的代码),它就会进入由facebook编写的无限循环代码。

我认为问题在于我是如何进行权限调用的。我有一个用于登录的表单,一旦用户尝试登录该站点,就会调用权限方法。这是我使用的表单中的表单和按钮:

<form id = "membershipInfo" method = "post" action = "Login.aspx">
<input type = "button" id = "submitInfo" class = "MemberInfo" value = "Take Me There!" onclick = "authorize(acceptPermissions, rejectPermissions)"/>

这是我使用的auth方法:

function authorize(successCallback, failureCallback) {
FB.getLoginStatus(function (response) {
   //****** DOES NOT MAKE IT PAST HERE *******//
    if (response.session) {
        // logged in and connected user, carry on
        session = response.session;
        //Set access token
        accessToken = response.session.access_token;
        //Call success callback
        successCallback();
    } else {
        // no user session available, Lets ask for perms
        FB.ui(
        {
            method: 'permissions.request',
            perms: permissionString //(equals "" )
        },
        function (response) {
            if (response && response.session != null) {
                //Get session
                session = response.session;
                //Set access token
                accessToken = response.session.access_token;
                //Call success callback
                successCallback();
            } else {
                //Call failure callback
                failureCallback();
            }
        });
    }
});

当用户接受权限时,他们会被转移到成功的回调方法,这个方法就在这里(从来没有这么做):

function acceptPermissions() {
    //Code done before moving on
    $('#submitInfo').submit();
}

有人看到任何问题吗?

2 个答案:

答案 0 :(得分:0)

看起来它应该对我有用,所以可能是向Facebook提交错误报告的好机会....

那就是说,我认为您可以使用FB.login而不是http://developers.facebook.com/docs/reference/javascript/FB.login/

来清理代码
FB.login(function(response){
    if(response.session){
        // logged in and connected user, carry on
        session = response.session;
        //Set access token
        accessToken = response.session.access_token;
        //Call success callback
        successCallback();
    }
    else{
        failureCallback();
    }
}, {perms: permissionString});

答案 1 :(得分:0)

所以这是一个问题:你安装了Flash吗? IE8,就像它一样,可能正在尝试加载基于Flash的XD,然后无声地失败。如果您安装Flash(和/或放入一个catch),它是否有效?