Post facebook 页面作为管理员(也有页面 access_token)

Post facebook page as admin (also have page access_token)

一开始对post老post感到抱歉,但不知道为什么没弄对

我 post 以管理员身份新加入 facebook 粉丝页面。我之前搜索过很多线程,并在他们发表评论时进行了修复。

但我仍然post作为页面的访客而不是管理员。

这些是我的职能:

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

对我的问题有什么建议吗?

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)

循环还有另一个大问题,您在 API 调用中使用了 "i" 变量 - 因为回调是异步的,所以当它实际命中回调函数。无论如何,你不应该在循环中大量使用 post,确保它适用于一页。