最近因為社群之星比賽緣故,碰到一個需求就是要把粉絲團的訊息做為系統的資料來源。因此,我們可以透過Facebook API
做到這需求,因此,就必須先去解如何去操作Facebook的API。在使用Facebook API之前,必須先去Facebook developer註
冊一組帳號,也可以說這是一組金鑰,後續相關操作都會跟這金鑰有關。
註冊Fackbook Apps,並取得金鑰
1.首先先登入Facebook Developers網站,選擇[ Apps ]
2.選擇[ 建立新的應用程式 ]
3.此時就會要你輸入一些相關資訊,依照上面指示填寫就可以,其中應用程式名稱空間必須使用小寫字母
4.點選確認後,就會出現下面基本訊息,其中最重要的APP ID & APP Secret的那一串數值。若是你目前沒有要在FB上開發相關
程式或是運用話,下面一些設定暫時可以不用管他,這樣就完成申請動作了
這樣申請完之後,我們可以去Use Graph API Explorer試試看成果
利用Use Graph API Explorer測試相關功能
1. 用Facebook的Use Graph API Explorer試著去取得粉絲團訊息,當我們送出相關指令時,會發現出現Token錯誤,主要是
上面的存取代碼必須設定,不然發生沒有權限存取的狀況,不過,若是透過C#寫的話,又可以用另一種方式處理了這後面會
提到,因此必須去取的相關性的Token,此外,Graph API語法類似OData概念,若是不是很懂得話,其實也可以透過旁邊的
選項,用點選方式就會產生相關的指令了
這邊選擇[ 取得存取代碼 ]去產生所需要的Token
之後會出現一個彈跳視窗,這邊主要目的是要抓取粉絲團的訊息,所以,我們可以先勾選public_stream,就會取得相關的Token,
不過,我發現之後要去抓其他的東西,例如圖片,也是可以共用的。點選完畢後,再點選Get Access Token就可以產生相關代碼
點選Get Access Token就會出現存取代碼,再存取代碼地方就會出現一大串數值,這之後再去操作下面的指令,這樣就可以取得粉
絲團的留言了
C#抓取相關Facebook資訊
以上大致上就完成80%,就可以輕易地取得粉絲團留言了。再來,就是如何透過C#抓取相關資訊了。
在C#內要用FB資訊,可以透過Jquery取得,也可以透過C#內部程式碼方式去取得,這邊會說明如何透過C#取得相關資訊,首先,
必須下載Facebook套件來用。這樣做法會是最簡單的,我們可以透過NuGet,打入Facebook,就可以取得Facebook相關元件,將
其參考進來就可以。
一開始可以宣告一個FacebookClient,然後這邊需要給予一個Token編號,不過,這裡Token可不是上面所敘述的存取代碼,所以,
我們需要產生一個Token編號。
1 | var s = new FacebookClient( "要給一個Token" ); |
那要如何取得呢?可以透過下面網址方式取得,此時,這邊就必須要用到剛剛註冊後的App ID & App Secret內的金鑰了,分別填入
這兩個金鑰值,然後去瀏覽器執行就可以得到相關Token
1 | https://graph.facebook.com/oauth/access_token?client_id=FB_App ID&client_secret=App Secret&grant_type=client_credentials |
然後就透過C#能去執行之前在Graph API上的指令就可以,這邊回傳的訊息會是採用JSON格式
1 | strig me = s.Get( "474374195974113/posts?fields=message,picture&limit=3" ).ToString(); |
對於回傳的資料格式處理方式可以參考[ASP.NET]使用JSON.NET在Server端操作JSON資料,就可以了
下面列出一些範例,可以把指令貼到Graph API內執行
抓取每本相簿內兩張照片:
粉絲團ID?fields=albums.fields(name,type,description,id,link,photos.limit(2).fields(picture,height,width))
取得前兩筆留言:
粉絲團ID/posts?fields=message,picture&limit=3
參考資料
Facebook SDK for .NET : http://facebooksdk.net/docs/web/getting-started/https://developers.facebook.com/
Facebook Develop : https://developers.facebook.com/
Facebook Graph API Explorer : https://developers.facebook.com/tools/explorer/1389665957942338/?method=GET&path=632894434%3Ffields%3Did%2Cname