-1

在我的母版页中,我有以下代码:

<body>
<div id="fb-root">
</div>
<script>
    window.fbAsyncInit = function () {
        FB.init({
            appId: "xxx",
            channelUrl: "/xd_receiver.htm",
            xfbml: false
        });
    };
</script>
....
</body>

在一个单独的 .js 文件中,我的 facebook 代码如下:

var Facebook = function () {
    var pub = {};
    var priv = {};

    pub.Login = function () {
        return priv.FacebookLogin();
    };

    priv.FacebookLogin = function () {
        FB.login(function (response) {
            if (response.authResponse) {
                FB.api('/me', function (response) {
                    console.log("you are logged in");
                    return response;
                });
            }
        });
    };

    return pub;
};

现在我的问题是,使用这样的代码,调用调用 FacebookLogin 函数的 Login 将返回控制台消息,即 login 在 init 之前调用,即使 init 就在 fb 说它应该在的位置,就在标签之后。我测试将我的 init clal 放在我的 FB.login 上方,然后它再次工作,所以 placemet 出了点问题。以前我在标签中链接了 js 文件(包含 facebook 函数),但我也尝试将它放在 init 脚本之后,但我遇到了同样的错误。(facebook函数的调用在一个链接的js文件中,有关系吗?)

任何想法为什么我收到此错误消息,FB.login() 在 FB.init() 之前调用?

4

1 回答 1

0

问题似乎是实际测试,在 localhost 中进行测试时,我必须重建允许我使用登录名的项目,但如果我只是使用 F5 更新页面,那么我遇到了问题。不是 100% 确定为什么,但我在进行更改后通过运行来解决它。

于 2013-01-14T10:17:59.027 回答