iT邦幫忙

DAY 8
0

30 天實戰跨平台行動APP系列 第 8

Day 8 : Facebook Graph API 實作

所以昨天我們已經知道要如何來使用Graph API,也知道有一個很棒的測試工具可以幫助你寫程式,

今天就要來試用這些api,看看取回的資料是什麼格式,是否可以如我們想像中順利。

首先要先確定用戶登入我們的app時,是否真的有開放我們要的權限。

GET /{user-id}/permissions

這邊的user-id可以使用me來替代,當然要用public_profile內的user_id應該也是可以的,只是直接用/me比較方便

為了方便,我們就直接使用PHP SDK ,PHP code是

$session = new FacebookSession($access_token);
$request = new FacebookRequest(
	$session,
	'GET',
	'/me/permissions'
	);

首先用access token創建session物件,再用session創建request物件,第二個參數若是GET就是讀取,若是POST就是寫入,有寫入就要提供資料,不管是圖片或是文字,這邊先探討讀取。第三個參數就是api,詳細的api指令可以從這邊查詢:

https://developers.facebook.com/docs/graph-api/reference/v2.1/

取得的結果code

$response = $request->execute();

$graphObject = $response->getGraphObject();

$data = $graphObject->asArray();

那$data到底是什麼,你可以var_dump看,或是別忘了,有一個非常好用的Graph API Exploer:

使用方法很簡單,先按GET ACCESS TOKEN 按鈕,會跳出一個權限的視窗,你要求什麼就要開啟相對應的權限,

然後選擇GET,POST或DELETE,再輸入node / page / field即可!

所以從結果可以看到返回的事JSON格式的資料,data是一個陣列,裡面的物件有兩個屬性permission跟status。

對比var_dump後,發現上段code 的 $data 就是那個陣列,接下來就可以視權限是什麼,有沒有granted,讓App來做適當的反應。

確認權限後,就可以來看看我們能得到什麼資料,

  1. public_profile,user_location, email

其中public_profile是基礎的公開資料,只要用戶同意login,就一定可以取得,而user_location跟email是要額外要求的!

GET /{user-id}/

有權限才會有email跟location囉,名字可以讓我們稱呼使用者,email用來註冊,location是我們這app的重點,所以也要取得。

  1. friends

    GET /{user-id}/friends

接下來我們想要取得朋友列表,但是由exploer測試後發現

怎麼只有幾個而已?我的朋友不止這些啊,難道我被大家unfriend了嗎?QQ

實際上自己測試更慘,取得的資料沒有半位朋友。

經過查詢之後才了解,原來現在只能取得使用者的朋友清單中同樣有在使用你的app並且有開放朋友列表這項權限的人了!

所以用exploer查詢friends,會查到你朋友中也有再用exploer 的人,這樣就非常make sense!因為我的名單出現的都是有在寫程式的朋友。

至於我自己的app當然還在開發中,沒半個人用過。

那如果還想要取得清單怎麼辦呢?可以使用taggable_friends這個參數。

GET /{user-id}/taggable_friends

就可以取得你全部的朋友清單跟大頭貼噢,問題是這個功能,是讓你可以用app發文時tag朋友的,而且僅限這個用途,

不能用這個取得的id,再來查詢那位朋友的資料!這對我們來說會造成什麼問題待會再提。

  1. user_status

    GET /{user_id}/statuses

非常猛的一項,會取得你發表過的所有內容,包含照片,影片,打卡,貼文,你去人家那邊留言,但是就是限定你發表的

有些貼文中會有place資料,有些則無。

  1. tagged_places

    GET /{user-id}/tagged_places

可以顯示出你被標注過的地點!有經緯度資訊!

  1. user_photos

    GET /{user-id}/photos

可以取得使用者被標注的相片,其中資料一樣不一定會有地點資訊

  1. read_stream

    GET /{user-id}/posts

重頭戲來囉!可以取得用戶的動態牆資訊!

回到第二項user_friends,本來我們的目標是再3D地球上顯示朋友的動態訊息,但是除非說你的朋友也有使用同一個app,

不然是取得不了他的id的。其實還是可以做成讓使用者登入後,發送邀請給他的朋友,請他使用,還是可以實作原來的idea。

但是沒關係,我已經想到了另一個點子,非常適合用在地球上,只需要FB的location資訊即可,

畢竟仔細想想,若只是看訊息,為何我不用facebook原生的app就好呢?

至於那個點子是什麼,隨著實作的進度大家自然就會理解囉。


上一篇
Day 7 Facebook API : Graph API
下一篇
Day 9 : WebGL初探
系列文
30 天實戰跨平台行動APP26

1 則留言

0
小松菜奈
iT邦研究生 4 級 ‧ 2016-09-29 21:36:21

我剛剛有個post到fan page問題,大大可以幫忙嗎?

我要留言

立即登入留言