Javascript SDK没有发布到Facebook

时间:2014-08-08 18:34:26

标签: javascript facebook

        <script type="text/javascript">

        function SendToFacebook()
        {
            window.fbAsyncInit = function () {
                // init the FB JS SDK
                FB.init({
                    appId: '432036336937975',                        // App ID from the app dashboard
                    status: false,                                 // Check Facebook Login status
                    xfbml: true                                  // Look for social plugins on the page
                });


                FB.login(function (response) {
                    FB.api('/me/accounts', function (apiresponse) {
if (response.authResponse) {
        //simple user access token
        var accessToken = response.authResponse.accessToken,
            ajaxRequest = new XMLHttpRequest(),
            pageId = '1521533601413118';

        ajaxRequest.onreadystatechange = function() {
            if(ajaxRequest.readyState === 4) {
                //print out the extended page access token
                alert(ajaxRequest.responseText);
            }
        };
        ajaxRequest.open('POST','generatePageToken.php?pageId=' + pageId, true);
        ajaxRequest.setRequestHeader('Content-type','application/x-www-form-urlencoded');
        ajaxRequest.send('accessToken=' + accessToken);
    }

                        var data = {
                            message: "mymessage test",
                            display: 'iframe',
                            caption: "caption",
                            name: "name",
                            description: "description",
                            to: '1521533601413118',
                            from: '1521533601413118'
                        };

                        FB.api('/1521533601413118/feed', 'post', data, function () {
                            console.log(arguments);
                        });


                    });

                }, { scope: 'manage_pages'});

            };
            // Load the SDK asynchronously
            (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/all.js";
                fjs.parentNode.insertBefore(js, fjs);
            } (document, 'script', 'facebook-jssdk'));
        }
        </script>

我收到此错误 &#34; [object Arguments] {0:Object {...},length:1}&#34;在我的JavaScript控制台中。为什么是这样?此外,我应该注意,我希望这个发布为PAGE而不是管理员。不确定它会做什么。我已经被困在这几天了,所以请有人帮忙吗?

我已经从这里和其他地方读过大约100个线程,所以我确实知道这是一个重复的线程,但是没有线程还没有为我工作。想链接给我一个帖子?可能已经尝试过了。我一定是错过了一个场景或什么的。请把对待我当成一个完整的开端 - facebook API太混乱了。

1 个答案:

答案 0 :(得分:0)

确保您熟悉Graph API的不同访问令牌。您需要一个页面访问令牌来发布“作为页面”。除此之外,它是完全相同的API调用。以下是一些有关令牌的有用链接以及如何获取它们:

最后一个链接解释了如何创建永久有效的扩展页面标记。您必须执行此服务器端,但您不需要PHP SDK。最好只在服务器上使用页面令牌。

如果您想将PHP SDK用于Feed发布,请参阅以下教程:

关于您的代码:您应该在页面加载时初始化Facebook,并且只在您的SendToFacebook函数中调用FB.login。另请查看Facebook文档中的“FB.getLoginStatus”,这样您就不必一直使用FB.login。

获取扩展页面令牌后的示例调用(只是一个示例,您可能需要urlencode参数,如消息):

$appsecretProof = hash_hmac('sha256', $accessToken, $fbAppSecret);
//init curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, 'facebook-php-3.2');

//get extended user access token
$url = 'https://graph.facebook.com/' . $pageId . '/feed?message=whatever' .
    '&access_token=' . $pageToken;
    '&appsecret_proof=' . $appsecretProof;
curl_setopt($ch, CURLOPT_URL, $url);
$curlResult = curl_exec($ch);

查看文档中的其他参数:https://developers.facebook.com/docs/graph-api/reference/v2.1/page/feed