2015-05-13 145 views
0

我有一些facebook的php代碼,在4/30/15升級之前完美地工作。我升級了我的代碼,它似乎在某些計算機上工作,但不在其他計算機上工作。在無法使用的計算機上,我嘗試了多個瀏覽器,結果相同。我可以使用SDK登錄到Facebook,但它不會將任何內容發佈到我的頁面牆上。相同的代碼,不同的電腦,一切工作正常。下面的代碼:Facebook的:PHP的SDK問題

<?php 
$facebook = new Facebook(array(
    'appId' => '##########', 
    'secret' => '##########', 
    'fileUpload' => true 
)); 
$user  = $facebook->getUser(); 
if ($user) { 
    try { 
     $user_profile = $facebook->api('/me'); 
    } 
    catch (FacebookApiException $e) { 
     error_log($e); 
     $user = null; 
    } 
} 
if ($user) { 
    $logoutUrl = $facebook->getLogoutUrl(array(
     'next' => ($user['baseurl'] . 'logout.php') 
    )); 
} else { 
    $loginUrl = $facebook->getLoginUrl(array(
     'scope' => 'publish_pages , manage_pages' 
    )); 
} 
$access_token = $facebook->getAccessToken(); 
$params  = array(
    'access_token' => $access_token 
); 
#The id of the fanpage 
$fanpage  = '############'; 
#The id of the album 
$album_id  = '############'; 
if ($user) { 
    $accounts = $facebook->api('/me/accounts', 'GET', $params); 
    foreach ($accounts['data'] as $account) { 
     if ($account['id'] == $fanpage || $account['name'] == $fanpage) { 
      $fanpage_token = $account['access_token']; 
     } 
    } 
    $message = 'Post this to the wall.'; 
    $img  = 'path to image.jpg'; 
    $args = array(
     'message' => $message, 
     'image' => '@' . $img, 
     'aid' => $album_id, 
     'no_story' => 0, 
     'access_token' => $fanpage_token 
    ); 
    $photo = $facebook->api($album_id . '/photos', 'post', $args); 
} 
?> 
+0

是否已發佈publish_pages和manage_pages?好吧,很可能他們不是,看到我的答案。 – luschn

+0

該應用程序的所有用戶都具有管理員或編輯者角色。 –

+0

所以我的錯誤日誌顯示了這一點:PHP致命錯誤:Uncaught OAuthException:(#200)需要擴展權限:publish_actions。 Facebook似乎試圖將用戶張貼到我的頁面牆上,而不是頁面到頁面牆?儘管代碼通過$ account ['access_token']抓取fanpage標記, –

回答

0

大多數權限需要獲得批准的Facebook它們可以被用於任何用戶之前,否則,他們只能在App一個角色的用戶。查看關於Login Review的文檔。

您只能使用publish_pagesmanage_pages作爲應用程序管理員/開發人員/測試人員未經審覈。

如果你只與這些用戶測試,它仍然無法正常工作,在調試器調試訪問令牌,看看這些權限真的授權:https://developers.facebook.com/tools/debug/

編輯:看了您的評論之後,我相信你是試圖使用用戶令牌。使用/ me/accounts來獲得一個Page Token,然後再試一次。如果您調試令牌,請確保頁面也顯示。

+0

該應用程序的所有用戶都具有管理員或編輯者角色。 –

+0

我已經添加了一些信息,您可能需要在調試器中檢查令牌 – luschn

+0

在調試器下沒有看到任何東西......在作用域下的manage_pages和publish_pages都在那裏。當代碼託管在服務器上時,我無法理解爲什麼此代碼可以在一臺計算機上運行,​​而無法在另一臺計算機上運行。 –