Facebook API示例代码有错误

时间:2014-08-09 10:59:18

标签: javascript ajax facebook

我直接在facebook api docs上得到了这个例子,我在firefox和IE10中都得到了Reference Error: FB is not defined

我不明白为什么在使用他们的示例代码时没有定义FB?这只是一个安全例外,因为我在本地运行这个或者FB文档代码确实有问题吗?

<!DOCTYPE html>
<html>
<head>
    <title>FB Login Test</title>
</head>
<body>
    <script type="text/javascript"> 
      window.fbAsyncInit = function() {
        FB.init({
          appId      : '(my app id)',
          xfbml      : true,
          version    : 'v2.1'
        });
      };

      (function(d, s, id){
         var js, fjs = d.getElementsByTagName(s)[0];
         if (d.getElementById(id)) {return;}
         js = d.createElement(s); js.id = id;
         js.src = "//connect.facebook.net/en_US/sdk.js";
         fjs.parentNode.insertBefore(js, fjs);
       }(document, 'script', 'facebook-jssdk'));

        function facebookLogin(){
            FB.login(function(response){
                if (response.authResponse) {
                    console.log('Welcome! Fetching your information');
                    FB.api('/me', function(response) {
                        console.log('Good to see you, ' + response.name + '.');
                    });

                    console.log(response);
                } else {
                    console.log('User cancelled login or did not fully authorize.');
                }
            });
        }

    </script>
    <a href="javascript:facebookLogin();">Login</a>
</body>
</html>

1 个答案:

答案 0 :(得分:3)

因为这一行,以及您使用本地页面的事实:

js.src = "//connect.facebook.net/en_US/sdk.js";

当网址不提供协议时,浏览器将使用浏览器当前正在查看的任何协议。由于您是从本地源使用此链接,因此使用的链接将是

file://connect.facebook.net/en_US/sdk.js

如果要从本地源使用它,则需要将协议添加到URL

js.src = "https://connect.facebook.net/en_US/sdk.js";