即使已经定义,FBe也不是一个功能

时间:2013-12-03 22:32:50

标签: javascript facebook facebook-graph-api facebook-javascript-sdk

<script>
         var userId = '1';
         var appId = 'MYAPPID';
         var appHost = 'https://localhost:44300/';
         // Api holder
         FBe = {};

         // FB JS SDK
         window.fbAsyncInit = function () {
             FBe = FB;
             FBe.init({
                 appId: appId,
                 status: true,
                 cookie: true,
                 xfbml: true,
                 frictionlessRequests: true
             }); 
         };

         (function (d, debug) {
             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" + (debug ? "/debug" : "") + ".js";
             ref.parentNode.insertBefore(js, ref);
         }(document, /*debug*/ false));

    </script>
    <script>
        // Test
        function fbTest() {
            FBe.api('/me', function (response) {
                alert('Your name is ' + response.name);
            });
        }


        fbTest();
    </script>

上面的代码给了我这个:

TypeError: FBe.api is not a function

为什么我会收到此错误?

我该如何解决?

1 个答案:

答案 0 :(得分:1)

您过早地致电fbTest()。你必须等到调用window.fbAsyncInit之后。 FB API尚未加载。

因为您要异步加载FB API,所以在调用window.fbAsyncInit之后才能使用它。在页面加载时使用FB API应该从window.fbAsyncInit调用。