发布facebook页面为admin(也有页面access_token)

时间:2016-10-17 07:00:16

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

起初我很抱歉发布旧帖子,但我不知道为什么我没有正确发布。

我将新的Feed发布到facebook粉丝专页作为管理员。我以前搜索了许多线程,并在他们评论时修复了。

  • 我对帖子页面拥有正确的权限。
  • 我有页面的PAGE access_token。
  • 我多次尝试退出。
  • 我已尝试在页面管理员手动填写页面管理员(成功)。

但是我仍然在页面上发布内容而不是管理员。

这些是我的职能:



    var page_id = [
                      '88290XXXXXX39694', //fan page 1
                      '17537XXXXXX02244', //fan page 2
               ];   
      
    var permission = 'publish_actions, publish_pages, manage_pages, user_events, publish_stream';
    
    function postFB(id, title, desc) {
    
        var title = title;
        var desc = desc;
        var body = title+"/n"+desc;
        var video_link = 'https://youtu.be/'+id+'';
    
        for(var i = 0; i<= page_id.length; i++ )
        {
            var accessToken = "";
            
            FB.api('/'+page_id[i]+'?fields=access_token', function(response) {
                accessToken = response.access_token;
            });
    
            FB.api('/'+page_id[i]+'/feed', 'post', {
                message: body,
                link: video_link,
                access_token: accessToken
            }, function(response) {
                if (!response || response.error) {
                    console.log(response);
                } else {
                    alert('Post ID: ' + response.id);
                }
            });
        }
    };
    
    function publish(id, title, decs) 
    {
        FB.login(function(response) {
            if (response.authResponse) {
                //Log auth permissions (in the response)
                console.log(response);
                FB.api('/me', function(response) {
                    console.log('Successful login for: ' + response.name);
    //                document.getElementById('status').innerHTML =
    //                    'Thanks for logging in, ' + response.name + '!';
                });
    
                postFB(id, title, decs);
    
            } else {
                console.log('User cancelled login or did not fully authorize.');
            }
        }, {
            scope: permission,
            return_scopes: true
        });
    };
&#13;
&#13;
&#13;

对我的问题有任何建议吗?

1 个答案:

答案 0 :(得分:2)

FB.api是异步的,你必须等待回调:

FB.api('/' + page_id[i] + '?fields=id,access_token', (response) => {
    FB.api('/' + response.id + '/feed', 'post', {
        message: body,
        link: video_link,
        access_token: response.access_token
    }, (response) => {
        if (!response || response.error) {
            console.log(response);
        } else {
            console.log('Post ID: ' + response.id);
        }
    });
});

您需要的唯一权限是manage_pagespublish_pages。我也使用了箭头功能(因为ES6在这里)。

循环还有另一个大问题,你正在使用&#34; i&#34; API调用中的变量 - 因为回调是异步的,所以当它实际点击回调函数时它将不一样。你不应该在循环中大量发帖,确保它适用于一页。