2012-08-15 79 views
1

我有一個擁有許多開放圖形頁面的應用程序。我能夠發佈這些網頁很好,除了照片。我得到一個「PHP致命錯誤:未捕獲的OAuthException:需要用戶訪問令牌來請求此資源。」這是沒有任何意義的,因爲我可以發佈到飼料作爲頁面沒有問題。張貼一張照片作爲開放圖facebook page

繼承人的代碼:

require_once ('facebook.php'); 

$fb = new Facebook(array(
'appId' => 'XXX', 
'secret' => 'XXX', 
)); 

$fb->setFileUploadSupport(true); 

$args = array('message' => 'Photo Caption'); 
$args['image'] = '@' . realpath("testpic.jpg"); 

$data = $fb->api("/PAGEID/photos", "post", $args); 

print_r($data); 
?> 

這是可能的,而無需用戶登錄到嗎?我讀過你可以請求頁面access_token作爲一個用戶,但是你可以使用一種方法來驗證一個函數,然後用另一種方式驗證另一個函數,這似乎有點愚蠢。如果可能,我想避免用戶登錄。

+0

提交我不想一個bug太多https://developers.facebook.com/bugs/371884269549068 – AdamB 2012-08-15 05:32:10

回答

0

發佈照片的應用程序需要在$ args中包含一個用於管理頁面的訪問令牌。這也被稱爲「頁面訪問令牌」或「頁面令牌」。

$args['access_token'] = $access_token; 

我得到這樣一個訪問令牌的方式是從誰是頁的管理員用戶(我)獲得manage_pages,publish_stream權限。然後:

$page_info = $facebook->api('/'.$PAGE_ID.'?fields=access_token'); 

和:

$access_token = $page_info['access_token']; 

參見:Developer blog post

+0

(我也不應該)如果我已經授權作爲應用程序獲得用戶令牌。 – AdamB 2012-08-16 17:12:14

+0

在我的示例中,我沒有使用用戶令牌,而是使用頁面令牌。我已經編輯了我的答案來澄清這一點。這也在我的答案中引用的博客文章中。基本上,我傳遞了一個允許ma​​nage_pages和publish_stream的頁面標記。您是否將正在使用的令牌提交給[調試器](https://developers.facebook.com/tools/debug)?調試器說它有什麼權限? – 2012-08-17 23:53:08

+0

什麼是沒有意義的是我可以發佈到Facebook頁面作爲頁面相關聯的應用程序沒有用戶訪問令牌(如在您的示例中),但對於不起作用的照片。這是Facebook的API不一致。 – AdamB 2012-11-07 00:39:17