FB.ui得到js错误

时间:2013-06-24 09:05:22

标签: facebook-javascript-sdk fb.ui

我在以下代码中收到javascript错误。 我得到的错误是“Uncaught ReferenceError:FB未定义.postToFeed(匿名函数)”。 有人可以帮我弄这个吗? 提前谢谢。

window.fbAsyncInit = function() {
        FB.init({
            appId      : '<?= APP_ID ?>', // App ID
            channelUrl : '.....', // Channel File
            status     : true, // check login status
            cookie     : true, // enable cookies to allow the server to access the session
            xfbml      : true  // parse XFBML
        });

        // Additional initialization code here
    };

    // 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));

    function postToFeed() {
        var obj = {
            method: 'feed',
            link: '<?= REDIRECT_URL ?>',
            picture: '<?= SHARE_IMAGE ?>',
            name: unescape('<?= SHARE_TITLE ?>'),
            caption: unescape('<?= SHARE_CAPTION ?>'),
            description: unescape('<?= SHARE_DESCRIPTION ?>')
        };

        function callback(response) {
            console.log(response);
            //alert("Message posted to your wall, thanks!");
            if (response && response.post_id) {
                alert('Success');
                window.location="page.php";
            }       else {
                alert('Fail.');
            }
        }
        FB.ui(obj, callback);
    }

    function sendToFriend() {
        var obj = {
            method: 'send',
            link: '<?= REDIRECT_URL ?>',
            picture: '<?= SHARE_IMAGE ?>',
            name: unescape('<?= SHARE_TITLE ?>'),
            caption: unescape('<?= SHARE_CAPTION ?>'),
            description: unescape('<?= SHARE_DESCRIPTION ?>')
        };

        function callback(response) {
            console.log(response);

            //alert("Message sent to your friend(s), thanks!");
            if (response && response.post_id) {
                alert("Success!");
                window.location="page.php";
            } else {
                alert('Fail.');
            }
        }

        FB.ui(obj, callback);
    }

1 个答案:

答案 0 :(得分:0)

对于你的第二个问题(来自评论)
发送方法在响应中返回post_id,这就是为什么即使成功发布后它也会进入else块。检查控制台中的响应,唯一返回的是成功参数success : true

第一个问题 您正在快速调用postToFeed(),即Facebook SDK仍在加载。尝试在window.onload

上拨打相同的电话