facebook登录错误FB.login()在FB.init()之前调用

时间:2013-05-11 15:20:29

标签: javascript facebook

我在登录facebook时遇到问题我不断收到错误代码:在FB.init()之前调用FB.login()。我做了各种各样的事情,但不断收到错误。 这是html代码:

 <!-- Javascript
        =================================================== -->
        <script src="//connect.facebook.net/en_US/all.js"></script>
        <script src="js/facebook.js"></script>
    </head>

    <body>
        <div id="fb-root"></div>
        <script>
            var email;
            var name;
            window.fbAsyncInit = function() 
            {
                FB.init({
                    appId      : '509855929050339', // App ID
                    status     : true, // check login status
                    cookie     : true, // enable cookies to allow the server to access the session
                    xfbml      : true  // parse XFBML
                });

                FB.Event.subscribe('auth.login', function () {
                    window.location = "http://webs.hogent.be/~096506gd/home.html";
                });
                FB.getLoginStatus(function(response) {
                    if (response.status === 'connected') {
                        // the user is logged in and has authenticated your
                        // app, and response.authResponse supplies
                        // the user's ID, a valid access token, a signed
                        // request, and the time the access token 
                        // and signed request each expire
                        var uid = response.authResponse.userID;
                        var accessToken = response.authResponse.accessToken;
                        window.location = "http://webs.hogent.be/~096506gd/home.html";
                    } else if (response.status === 'not_authorized') {
                        // the user is logged in to Facebook, 
                        // but has not authenticated your app
                    } else {
                        // the user isn't logged in to Facebook.
                    }
                });

            };

            // Load the SDK asynchronously
            (function(d){
                var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
                if (d.getElementById(id)) {return;}
                js = d.createElement('script'); js.id = id; js.async = true;
                js.src = "//connect.facebook.net/en_US/all.js";
                ref.parentNode.insertBefore(js, ref);
            }(document));
        </script>
        <div class="container">
            <img class="offset-by-three ten columns margin-top25" src="images/logo.png">
            <div class="offset-by-five">
                <a class="six columns full-width button margin-top175" href="home.html">
                    Aanmelden
                </a>
                <a class="six columns full-width button margin-top175" onclick="loginUser()">
                    Aanmelden met facebook
                </a>
            </div>
        </div>
    </body>
</html>

这是javascript文件:

function loginUser(){
    FB.login(function(response) {

        if (response.authResponse) {
            console.log('Welcome!  Fetching your information.... ');
            //console.log(response); // dump complete info
            access_token = response.authResponse.accessToken; //get access token
            user_id = response.authResponse.userID; //get FB UID

            FB.api('/me', function(response) {
                alert ("email: "+response.email); //get user email
                alert ("naam : "+respone.name);

          // you can store this data into your database             
            });

        } else {
            //user hit cancel button
            console.log('User cancelled login or did not fully authorize.');

        }
    }, {
        scope: 'publish_stream,email'
    });
}

2 个答案:

答案 0 :(得分:3)

在您的代码中,您将包含三次Facebook JavaScript SDK!删除以下行: <script src="//connect.facebook.net/en_US/all.js"></script><script id="facebook-jssdk" async="" src="//connect.facebook.net/en_US/all.js"></script>

此外,您可能需要在Facebook初始化之前等待一两秒,这可能是您收到错误的另一个原因。

再试一次,希望它现在可以正常工作。

答案 1 :(得分:0)

将app_id放在js src旁边

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

这对我有用。