Shaolin.TW

shaolin's 20% time

Facebook 修改文章 API

前言

前幾天發現手機版 Facebook 多出了『編輯貼文』的功能,才發現最近 Facebook Android App Beta 3.7 版本多了一個 feature:Edit your posts and comments, and tap to see all your changes。目前網頁介面都還沒有看到可以編輯貼文的地方,這很特別,一個 web 起家的服務推出新功能是先從手機版開始!

facebook_android_edit_post.png

編輯貼文的功能大家已經期待很久,我特別好奇它的 API 是長什麼樣子,想看看是不是有機會讓 web 版也能搶先使用,所以就從 Facebook 手機端應用程式抓出修改文章的 API,與大家分享。

Facebook Edit Post API

完整的 HTTP request 如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
POST https://graph.facebook.com/
Authorization: OAuth CAACEdEose0cBAPWltYXWoy3oTEyNmbtqM51q5w0NSwKcTy9HzZnB7CfrWpFoGYMVhv84UadAX6xmck5si23bwTtKPyDESRjquegLJNQDTGcxAzt749pdPqjv56i8FVN3osfSry2hBQKZWeUYngwMabEmHukRCLJXe5ksqvdfCB3YU6yz4uGnHK8gFbSx7TRhMt9a2AZJLEpPmWNrQD
Host: graph.facebook.com
Accept-Encoding: gzip
User-Agent: [FBAN/FB4A;FBAV/3.7;FBBV/353711;FBDM/{density=1.5,width=480,height=800};FBLC/zh_TW;FBCR/中-華-電-信-;FBPN/com.facebook.katana;FBDV/HTC Incredible S;FBSV/4.0.4;FBOP/1;FBCA/armeabi-v7a:armeabi;]
Content-Type: multipart/form-data; boundary=_--5h40l1n47D3VC0RE
--_--5h40l1n47D3VC0RE
Content-Disposition: form-data; name="batch"
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

[{"method":"POST","body":"message=after+edit&format=json","name":"editPost","omit_response_on_success":false,"relative_url":"820574444_10151876422189445"}]
--_--5h40l1n47D3VC0RE--

使用上需要修改的是 Authorization、POST 裡面的 messagerelative_url 三個地方。 Authorization:OAuth 後面接的是 Access Token,可以到 Graph API Explorer 去抓一個暫時的來用。 message:這邊放你貼文的新內容。 relative_url:想修改的貼文 object_id,格式是 (發文者的 facebook uid)_(該貼文的 post id)

以下利用 Firefox 的 add-on : HttpRequester 發送 HTTP 請求來修改文章。

為了實驗能否在 web 端使用,我先在 Graph API Explorer 測試此 API,發現都會回傳 (#200) User does not have permission to edit this object

graph_fail.png

後來才發現這個 API 會認 User-Agent,如果是非手機端的 User-Agent 使用此 API,即使是使用相同的 Access Token,一樣會回傳 (#200) User does not have permission to edit this object

user_agent_change.png

至於大家最關心的可能是,如果把 relative_url 的 object id,改成別人的 post id,是不是就可以 修改別人的貼文 了呢?傻傻的,同樣的問題 Facebook 都碰過好多次了,有這種想法太天真了!

change_post_id.png

(嗯..沒錯..天真的是我 XD)

結論

Facebook 終於開始在手機端提供修改文章的功能了,可惜的是這個 API 會對 User-Agent 做檢查,不太方便做成 extension 讓大家搶先使用。如果目前有修改文章的需求,使用 Android 吧 :p 此外,本篇也稍稍的測試了一下前陣子 Facebook 出事的權限管控問題,看起來沒有什麼大問題,哈!

« 在 PTT 插 javascript 神魔之塔脫機自動戰鬥 »

Comments