跳到主要內容

Graph API基本原理

一個臉書應用程式,除了本身自己的功能外,會需要臉書的不過就是需要它的社交網路,取取資料、改改資料或貼貼資料。對使用Graph API而言,就是CRU(Create、Read、Update)。那Delete勒?我想除非是一個臉書功能相關的管理程式,像是Facebook手機版,否則不太會需要用到Delete。這些操作的內容,其實是對應到HTTP不同種類的request:

  • HTTP Get: Read。Graph API中最廣泛的使用,取資料就靠它。
  • HTTP Post: Create、Update、Delete。新增、修改、刪除資料都可以透過它,但大都用於新增與修改。
  • HTTP Delete: Delete。刪除資料就靠它,但並非所有的Client都支援Delete的Request,所以POST request也提供刪除的功能。

為了讓大家容易了解,接下來我會透過範例,並使用Graph API Explorer示範這些操作。

  • 我想知道我的好友中,有幾個裝這個應用程式。
  • 我要發佈訊息到塗鴉牆。
  • 我要刪除我發布的訊息。

HTTP Get

先前介紹Graph API所提到的操作,都是很單純的用HTTP Get去取得資料。今天在這我就介紹給大家一定會使用到的應用: 取得已安裝應用程式的朋友。在我的國軍登出倒數計時器APP中,提供了朋友的資訊,讓你知道有多少人安裝了這個APP。

除了主要功能會用到外,要邀請朋友當然也會需要去濾掉那些已經安裝的朋友們拉! 送禮物或索討禮物也會想先發給安裝的朋友們! 那我們該如何取到這樣的資訊呢?

「透過HTTP Get去取得朋友的清單,接著使用Field Selection功能去顯示出User Object的installed欄位。」

這個操作僅會使用到User的Object,包含friends connection與installed field。讓我們看看透過Explorer Query的結果:


如上圖所示,如果User的結果中有installed且為true,就代表它有安裝這個APP。

使用Graph API取資料,我認為要點是: 「先思考你要找的東西中心點為何? 它所對應的物件為何? 此中心點與要找的東西關聯性為何? 最後才看看你要的屬性為何?」

除了上述提到的Field Selection功能,Graph API還支援Paging、Locale、Search等功能。有興趣的鄉民可以至各連結或Document中研究與練習。

HTTP Post

常見如讚(like)、貼文(feed)、回文(comment)等,都是Post操作,使用也相當簡單。


假設我想告訴大家輔大操場有正妹,還要點讚推文好讓大家都看的到。我要做兩個Post操作: feed與like, 貼文(feed)的格式為:

https://graph.facebook.com/PROFILE_ID/feed

讚(like)的格式為:

https://graph.facebook.com/OBJECT_ID/likes

因為我要發佈到我的塗鴉牆,所以PROFILE_ID是我的ID或用me替代。接著新增一個field(Post操作才有),key為message,value就是把輔大有正妹的消息告訴大家。接著加上feed的connection:

在做完貼文的操作後,我們可以取得一個ID(這是PROFILE_ID和POST_ID串起來的),這就是OBJECT_ID。將它加上likes的connection:

最後到塗鴉牆上,就可以發現有幾個色坏(我除外)來點讚了:


當你想新增或修改什麼東西的時候,「先看看中心物件為何?再看看此中心物件與你要新增修改的關係為何?」。這樣子就可以透過文件看看該如何做,去達到你想要的結果:

像打卡中心就是自己(User Object),checkins就是關係connections。從文件中可以知道必須至少給它地點ID與座標所在的參數。

HTTP Delete

Delete也相當容易,直接指定OBJECT_ID即可。

https://graph.facebook.com/OBJECT_ID

像是要砍掉在Post範例中的貼文:


需要另外注意的是:有些刪除動作是要打斷connections。之前點讚是透過對某物件的likes connections做Post,收回讚就是對某物件的likes connections做Delete就可以了!

我認為訣竅是:「刪物件用ID,斷連結用ID+Connections。」

Summary

不管是先前的Graph API介紹或本篇文章,目的都是為了讓大家了解“根本”,其實早就有人將Graph API包裝成各自語言的API了。但API該如何使用,或是如何擴充API都必須了解Graph API之根本才行。希望Graph API介紹系列的文章能給予大家一些幫助。

Reference

留言

這個網誌中的熱門文章

PostgreSQL - Unattended installation on windows

Introduction 要將別人軟體包裝到自己軟體中,不可或缺的東西就是Unattended installation。以Unattended installation來說,我們可以選擇透過Installer的silent mode安裝,也可以透過把目標軟體做成portable的版本。本篇文章分享這兩種方法,教導大家如何將PostgreSQL透過Unattended installation方式安裝到目標系統成為service。 Note. 本篇以PostgreSQL 10.7為例。 Install with installer Tips 安裝程式或反安裝程式的參數,除了可以直接上官網搜尋Installation User Guide以外,也可以直接使用help參數查詢: postgresql- 10.7 - 2 -windows-x64.exe --help Windows安裝程式主要有EnterpriseDB與BigSQL兩種。BigSQL版本安裝元件是透過網路下載且支援參數不如EnterpriseDB版本多,以我們需求來說,我們傾向於使用EnterpriseDB版本。接下來分享給大家安裝與反安裝方法。 Installation @ echo off set INSTALL_DIR =C:\postgres10 set INSTALLER =postgresql- 10.7 - 2 -windows-x64.exe   rem options for installation set SSMDB_SERVICE =postgresql- 10 set MODE =--unattendedmodeui none --mode unattended   set DB_PASSWD =--superpassword postgres set DB_PORT =--serverport 5432   set SERVICE_NAME =--servicename % SSMDB_SERVICE %   set PREFIX =--prefix "%INSTALL_DIR%" set DATA_DIR =--datadir "%INSTALL_DIR%\data"   set OPTIONS =

How to install RIDE on Windows?

Introduction 多年沒在Windows上開發RobotFramework,趁著這次整理一下RIDE安裝方法。 目前RIDE最新版本與Python對應版本如下: (3.6 < python <= 3.11) Install current released version (2.0.8.1) with: pip install -U robotframework-ride 安裝Python 直接到Python官網找尋最新的3.11版本,我使用3.11.9: link 。安裝就是一直下一步而已。 安裝wxPython 每次安裝RIDE最困難的都是wxPython。看了一下 官網 描述,我就姑且相信一下: 接著進入下 載頁面 就有安裝教學。基本上就是到Python目錄下的Scripts直接執行以下command: pip install -U wxPython 安裝RIDE 接著就如RIDE官網所說,執行以下command: pip install -U robotframework-ride 啟動RIDE 直接在相同目錄下執行ride就可以啟動了,你也可以直接在桌面建ride連結,加快下次啟動時間。 沒想到這次這麼順利就安裝完成了。因為我是使用java去啟動robot framework,就不特別講要怎麼使用pip安裝robot framework了。

Hello World!

即將要搬家,因此舊網頁內容將慢慢轉移至Blogger。 如果要存取舊網頁,可以使用以下連結: https://wiki.tonylin.idv.tw/dokuwiki/doku.php