Опубликовать facebook страницу как admin (также есть страница access_token) [дублировать]

На этот вопрос уже есть ответ:

Сначала я прошу прощения за пост старого поста, но я не знаю, почему я не сделал это правильно.

Я отправляю новый фид на страницу поклонника facebook как администратор. У меня есть поиск по многим темам раньше, и я исправил их комментарии.

  • У меня есть правильные разрешения для почтовой страницы.
  • У меня есть страница PAGE access_token для страницы.
  • Я пытался выходить из системы и во много раз.
  • Я попытался отправить фид на странице вручную в качестве страницы admin (Успешно).

Но я все равно отправляю как visior, а не admin на странице.

Это мои функции:

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

Любое предложение для моей проблемы?

javascript,facebook,facebook-graph-api,facebook-javascript-sdk,facebook-access-token,

0

Ответов: 1


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_pagesи publish_pages. Я также использовал функции стрелок (потому что ES6 здесь).

Существует еще одна большая проблема с циклом, вы используете переменную «i» в вызовах API - поскольку обратный вызов является асинхронным, он не будет таким же, если он фактически обращается к функции обратного вызова. Вы все равно не должны массово размещать в цикле, убедитесь, что он работает на одной странице.

JavaScript, facebook, facebook-граф-апи, facebook-на JavaScript SDK, facebook-доступ-маркер,
Похожие вопросы