0

起初,我對這篇帖子的舊帖子很抱歉,但我不知道爲什麼我沒有正確地做到這一點。後的Facebook頁面管理員(也有頁的access_token)

我以管理員身份向Facebook粉絲頁面發佈新Feed。我之前搜索了很多主題,並且我在他們評論時進行了修復。

  • 我有帖子頁面正確的權限。
  • 我有PAGE access_token頁面。
  • 我試過註銷並在很多時候。
  • 我嘗試過頁面管理員(成功)手動在頁面中進行提要。

但我仍然出任visior不是在頁面的管理。

這些都是我的功能:

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

我的問題的任何寶貴意見?

+0

why publish_stream?該許可自許多年以來已被棄用。以及爲什麼publish_actions?你不想以用戶身份發帖,對嗎?不知道你爲什麼要求user_events。只使用你真正需要的權限。 – luschn

+0

這不是我的問題。我已經知道這個許可不再有用 – TommyDo

回答

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在這裏)。

循環還有一個大問題,你在API調用中使用「i」變量 - 因爲回調是異步的,當它實際上觸發回調函數時,它不會是相同的。無論如何你都不應該在一個循環中大量發佈,確保它在一個頁面上工作。

+0

作爲你的評論,我發現之前沒有得到access_token,而且我編輯得像你的。但結果是一樣的。它仍然發佈到訪問者頁面而不是管理員時間表。無論如何感謝您的建議。 – TommyDo

+0

那麼你沒有使用正確的頁面令牌。調試它並確保它是一個。 – luschn

+0

我也調試了密鑰令牌。它用我的頁面ID返回了正確的標記。我認爲我沒有發佈具有請求權限的應用程序,因此我無法將其作爲管理頁面進行發佈。知道我在等待這個請求的答案。 – TommyDo

相關問題