Facebook Graph API:在调用FB.init()之前调用FB.login()

时间:2010-05-18 09:00:55

标签: facebook facebook-graph-api

我正在尝试在我的网站上使用新的Facebook Graph API。这就是我所拥有的:

页面上某处:

<fb:login-button autologoutlink="true" perms="email,user_birthday,status_update,publish_stream"></fb:login-button>

标签后面:

<div id="fb-root">
    </div>
    <script type="text/javascript">
        window.fbAsyncInit = function () {
            FB.init({ appId: '<%= ConfigurationManager.AppSettings["FBAppId"] %>', status: true, cookie: true, xfbml: true });

            /* All the events registered */
            FB.Event.subscribe('auth.login', function (response) {
                // do something with response
                alert("login success");
            });
            FB.Event.subscribe('auth.logout', function (response) {
                // do something with response
                alert("logout success");
            });

            FB.getLoginStatus(function (response) {
                if (response.session) {
                    // logged in and connected user, someone you know
                    alert("login success");
                }
            });
        };
        (function () {
            var e = document.createElement('script');
            e.type = 'text/javascript';
            e.src = document.location.protocol +
            '//connect.facebook.net/en_US/all.js';
            e.async = true;
            document.getElementById('fb-root').appendChild(e);
        } ());
    </script>

但是当我点击生成的登录按钮时,没有任何反应。

另外,我正在

FB.getLoginStatus() called before calling FB.init().

在Firebug控制台中。

有什么想法吗?

3 个答案:

答案 0 :(得分:43)

我无法相信,我在Web.config中引用了一个非现有密钥,因此FB.init无声地失败。

现在按预期工作。

更清楚我没有将appId传递给FB.init,一旦我这样做了,它就有效了。

答案 1 :(得分:2)

就我而言,在我禁用XFBML功能(即将xfbml密钥设置为false,删除fb:命名空间和#xfbml=1片段后问题就消失了在<script src="…">)。很好,我还是不需要它。

YMMV,出现此错误消息还有其他几个正当理由。

答案 2 :(得分:2)

有同样的问题,这是适合我的解决方案。只需将以下内容放入您的头部,或者换句话说,将 app_id 添加到facebook js的源代码中。

<script src="//connect.facebook.net/en_US/all.js&appId=xxxxxxxxxxxxxxx" type="text/javascript"></script>