Facebook Graph API: FB.login() called before calling FB.init()

烂漫一生 提交于 2020-01-12 04:01:30

问题


I'm trying to use the new Facebook Graph API on my website. This is what I have:

Somewhere on the page:

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

Right after the tag:

<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>

but when I click on the generated login button, nothing happens.

In addition, I'm getting

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

in Firebug console.

Any ideas?


回答1:


I can't believe it, I was referencing a non existing key in the Web.config hence FB.init was failing silently.

It works as expected now.

To be clearer I wasn't passing the appId to FB.init, once I did, it worked.




回答2:


In my case, the problem went away after I disabled the XFBML functionality (i.e. setting the xfbml key to false, removing the fb: namespace and the #xfbml=1 fragment in <script src="…">). Good that I didn’t need it anyway.

YMMV, there are several other valid reasons why this error message can appear.




回答3:


Had the same issue, here is the solution that worked for me. Just put the following in your head section or in other words, add the app_id to the source of the facebook js.

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



来源:https://stackoverflow.com/questions/2855784/facebook-graph-api-fb-login-called-before-calling-fb-init

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!