2012-08-10 84 views
2

O.K.這一直讓我忙了兩天,現在我正在絞盡腦汁。我已經在論壇上發佈了它,問朋友們,廣泛地搜索它,並看着stackoverflow。我不是第一個發佈這個問題,但我無法在答覆中找到答案,所以這就是我創建這個新問題的原因。使用PHP發佈到用戶的牆上

這就是我想要做的: - 我想在PHP中將消息作爲Facebook應用發佈到用戶的牆上。 - 我想做這個服務器到服務器,所以沒有對話框和任何用戶交互(他可以在那個時刻修剪我所關心的草坪) - 此用戶已授予我的應用程序的許可權,這些權限是:1)manage_pages,2)publish_stream,3)read_stream - 我使用的是PHP的Facebook SDK - 這是我的代碼:

/* Facebook */ 
$facebook = new Facebook(array(
    'appId' => FACEBOOK_APP_ID, 
    'secret' => FACEBOOK_APP_SECRET 
)); 
/* string */ 
$accessToken = $facebook->getAccessToken(); 
/* Array<string> */ 
$postFields = array("message"=>"test2", "access_token"=>$accessToken); 

$facebook->api('/{the-id-of-the-facebook-user}/feed','post',$postFields); 

這是問題: 我不斷收到以下錯誤:(#200)用戶尚未授權應用程序執行此操作。

這是一個廢話消息導致用戶已經授權我的應用程序(該用戶也恰好是我,我檢查了應用程序下的所有權限,他們很好)。

任何建議將不勝感激,因爲我不知道在哪裏再看。我知道其他人之前發佈過這個問題,但答案並不令人滿意。提前致謝。

+0

看來'publish_stream'問題。確保您已授予'publish_stream'權限。 – 2012-08-10 09:21:23

+0

你不應該自己處理access_token - SDK完全有能力處理它自己的。但是,既然你正在調用getAccessToken - 它返回什麼值?調試工具對該令牌有什麼要說的? https://developers.facebook.com/tools/debug – CBroe 2012-08-10 09:25:13

+0

我有publish_stream權限。令牌是一串長長的字母和數字,帶有'|'在中間的某個地方。當我輸入訪問令牌時,調試器返回以下內容:'Toepassings-ID:\t 152046464919618:Uitjezelf' – 2012-08-10 10:20:32

回答

-1

如果要發佈的Feed來自授予權限的同一用戶,則可以將me而不是{the-id-of-the-facebook-user}。我只是試過這個,它的工作原理:

$facebook->api(
    '/me/feed/', 
    'post', 
    array(
    'message' => "my message" 
)); 

無需發佈access_token。用戶給出的權限僅爲publish_actions

+0

不,事實並非如此,該帖子是從一個Facebook應用程序到另一個Facebook用戶。所以我們在談論兩個不同的賬戶。 – 2012-08-10 10:21:58

+0

@JustinvanSchaick Ahh,好的,現在我明白了「服務器到服務器」的含義。對不起,如果我把我的答案弄糊塗了。 – Martinson 2012-08-10 11:01:40

+0

@JustinvanSchaick也許你可以讀這:http://stackoverflow.com/questions/9677975/post-to-a-facebook-users-wall-from-a-page-or-app – Martinson 2012-08-10 11:14:26

0

應用不允許發佈到用戶的牆上。您只能以用戶身份或作爲其他用戶(即用戶到用戶)發佈到牆上。如果您想通知用戶某些內容,則應該使用應用到用戶的請求API。

+0

作爲用戶發佈是我正在努力完成的。但關鍵在於如果沒有客戶端 - 服務器認證過程,它應該是可能的。換句話說,託管該網站的服務器應該能夠隨時向用戶的牆發表評論。詳細說明我想要做什麼:我正在爲客戶建立一個網站。本網站已註冊用戶如何在該網站上發佈內容。該網站還有一個Facebook頁面。該網站必須能夠發佈由其用戶在其自己的Facebook頁面上發佈的內容。 – 2012-08-10 13:47:02

+0

好的。您可以通過請求'publish_stream'在服務器端執行此操作。然後使用上述答案中的代碼。如果您想要在用戶帳戶離開您的網站後繼續發佈信息,則需要使用長期存取令牌。 – 2012-08-13 13:48:18

+0

我有發佈流權限。但是我知道在令牌過期後,用戶必須再次授權該應用才能獲得新令牌?如果沒有請求新的令牌,是否無法總是發佈到用戶的牆上? – 2012-08-15 06:09:55

0

我找不出是什麼原因導致了錯誤。我嘗試了很多角度。在某些情況下,我確實設法在牆上張貼一些東西,因爲api返回了帖子的ID,我可以進入瀏覽器查看帖子(www.facebook.com/{the-id-of-the-post })。

但奇怪的是,這篇文章沒有出現在時間軸上,而是出現在一個單獨的頁面上。該頁面頂部沒有用戶配置文件,正如Facebook頁面的正常情況一樣。它在查詢字符串中也有一個storyID參數。我無法弄清楚我是什麼網頁,爲什麼它不會出現在時間線上。

我試圖發佈的Facebook頁面是公司頁面。但它並不像通常情況那樣附屬於「正常」的Facebook(個人)頁面。最終我確實設法發佈到屬於「普通」頁面的頁面頁面。所以在大多數情況下我的代碼現在可以工休息一下,Facebook SDK還有很多需要改進的地方,它是文檔和http://developers.facebook.com的文檔。如何執行某些操作並不十分清楚。我花了很多時間在WP7應用程序上使用Facebook功能,現在我花了至少4天的時間爲此網站工作。我決定編寫我自己的SDK並在未來擴展它。

感謝大家的時間和幫助。 Stackoverflow岩石!

相關問題