Javascript 在调用FB.init()-Facebook画布应用程序之前调用了FB.login()

Javascript 在调用FB.init()-Facebook画布应用程序之前调用了FB.login(),javascript,facebook,facebook-javascript-sdk,facebook-php-sdk,Javascript,Facebook,Facebook Javascript Sdk,Facebook Php Sdk,我正在开发一个facebook画布应用程序 window.fbAsyncInit = function() { FB._https = (window.location.protocol == "https:"); FB.init({ appId: {$appid}, status: true, cookie: true, xfbml: true, oauth: true}); FB.Canvas.setAutoGrow()

我正在开发一个facebook画布应用程序

    window.fbAsyncInit = function()
    {
    FB._https = (window.location.protocol == "https:");
    FB.init({ appId: {$appid},
    status: true,
    cookie: true,
    xfbml: true,
    oauth: true});
    FB.Canvas.setAutoGrow();
    }
    {literal}
            function loginurl(){

                FB.login(function(response) {

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

                        location.href="game";


                    }
                    else if (response.status === 'not_authorized')
                    {

                       // FB.login();

                    } else
                    {

                       // FB.login();

                    }


                },{scope: 'email,user_hometown,user_mobile_phone,user_location,user_birthday,read_friendlists,publish_stream,xmpp_login'});
            }
    {/literal}
</script>
我的画布应用程序的Url

    window.fbAsyncInit = function()
    {
    FB._https = (window.location.protocol == "https:");
    FB.init({ appId: {$appid},
    status: true,
    cookie: true,
    xfbml: true,
    oauth: true});
    FB.Canvas.setAutoGrow();
    }
    {literal}
            function loginurl(){

                FB.login(function(response) {

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

                        location.href="game";


                    }
                    else if (response.status === 'not_authorized')
                    {

                       // FB.login();

                    } else
                    {

                       // FB.login();

                    }


                },{scope: 'email,user_hometown,user_mobile_phone,user_location,user_birthday,read_friendlists,publish_stream,xmpp_login'});
            }
    {/literal}
</script>
一切正常,但有时我在单击登录按钮时出错,即在调用FB.init()之前调用了FB.login()。这是很难复制的问题,我只有在某些情况下得到这个问题,我把我的登录代码在页面的末尾,即在关闭body标签之前。我的ipad也出现了这个错误

    window.fbAsyncInit = function()
    {
    FB._https = (window.location.protocol == "https:");
    FB.init({ appId: {$appid},
    status: true,
    cookie: true,
    xfbml: true,
    oauth: true});
    FB.Canvas.setAutoGrow();
    }
    {literal}
            function loginurl(){

                FB.login(function(response) {

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

                        location.href="game";


                    }
                    else if (response.status === 'not_authorized')
                    {

                       // FB.login();

                    } else
                    {

                       // FB.login();

                    }


                },{scope: 'email,user_hometown,user_mobile_phone,user_location,user_birthday,read_friendlists,publish_stream,xmpp_login'});
            }
    {/literal}
</script>
我在谷歌上搜索了这个问题,并在堆栈中找到了类似的线程,它们都提到all.js调用了两次。但在我的情况下,我只在我的页面上打过一次电话

    window.fbAsyncInit = function()
    {
    FB._https = (window.location.protocol == "https:");
    FB.init({ appId: {$appid},
    status: true,
    cookie: true,
    xfbml: true,
    oauth: true});
    FB.Canvas.setAutoGrow();
    }
    {literal}
            function loginurl(){

                FB.login(function(response) {

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

                        location.href="game";


                    }
                    else if (response.status === 'not_authorized')
                    {

                       // FB.login();

                    } else
                    {

                       // FB.login();

                    }


                },{scope: 'email,user_hometown,user_mobile_phone,user_location,user_birthday,read_friendlists,publish_stream,xmpp_login'});
            }
    {/literal}
</script>
我还怀疑我的页面中有类似按钮的代码

<div class="fb-like" data-href="https://www.facebook.com/bayern3" data-width="100" 
data-layout="button" 
data-action="like" data-locale="de_DE" data-show-faces="false" data-share="false">
</div>  
    window.fbAsyncInit = function()
    {
    FB._https = (window.location.protocol == "https:");
    FB.init({ appId: {$appid},
    status: true,
    cookie: true,
    xfbml: true,
    oauth: true});
    FB.Canvas.setAutoGrow();
    }
    {literal}
            function loginurl(){

                FB.login(function(response) {

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

                        location.href="game";


                    }
                    else if (response.status === 'not_authorized')
                    {

                       // FB.login();

                    } else
                    {

                       // FB.login();

                    }


                },{scope: 'email,user_hometown,user_mobile_phone,user_location,user_birthday,read_friendlists,publish_stream,xmpp_login'});
            }
    {/literal}
</script>

登录Facebook Javascript代码

    window.fbAsyncInit = function()
    {
    FB._https = (window.location.protocol == "https:");
    FB.init({ appId: {$appid},
    status: true,
    cookie: true,
    xfbml: true,
    oauth: true});
    FB.Canvas.setAutoGrow();
    }
    {literal}
            function loginurl(){

                FB.login(function(response) {

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

                        location.href="game";


                    }
                    else if (response.status === 'not_authorized')
                    {

                       // FB.login();

                    } else
                    {

                       // FB.login();

                    }


                },{scope: 'email,user_hometown,user_mobile_phone,user_location,user_birthday,read_friendlists,publish_stream,xmpp_login'});
            }
    {/literal}
</script>
window.fbAsyninit=function()
{
FB._https=(window.location.protocol==“https:”);
FB.init({appId:{$appId},
状态:正确,
曲奇:是的,
xfbml:是的,
oauth:true});
FB.Canvas.setAutoGrow();
}
{literal}
函数loginurl(){
FB.登录(功能(响应){
如果(response.status===“已连接”){
location.href=“游戏”;
}
else if(response.status===“未授权”)
{
//FB.login();
}否则
{
//FB.login();
}
},{范围:'电子邮件,用户家乡,用户手机,用户位置,用户生日,阅读朋友列表,发布流,xmpp登录'});
}
{/literal}

请帮助我查找代码中的任何错误,提前感谢

如果在JS SDK完成初始化之前单击按钮,就会发生这种情况。解决方法是将调用登录函数的处理程序动态绑定到
fbAsyncint
处理程序中的登录按钮,甚至可能在触发该事件之前都不会显示它。谢谢您的回复…我会检查这种方式
    window.fbAsyncInit = function()
    {
    FB._https = (window.location.protocol == "https:");
    FB.init({ appId: {$appid},
    status: true,
    cookie: true,
    xfbml: true,
    oauth: true});
    FB.Canvas.setAutoGrow();
    }
    {literal}
            function loginurl(){

                FB.login(function(response) {

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

                        location.href="game";


                    }
                    else if (response.status === 'not_authorized')
                    {

                       // FB.login();

                    } else
                    {

                       // FB.login();

                    }


                },{scope: 'email,user_hometown,user_mobile_phone,user_location,user_birthday,read_friendlists,publish_stream,xmpp_login'});
            }
    {/literal}
</script>