Day 8 : Facebook Graph API 實作 - iT 邦幫忙- iThome

文章推薦指數: 80 %
投票人數:10人

那$data到底是什麼,你可以var_dump看,或是別忘了,有一個非常好用的Graph API Exploer:. 使用方法很簡單,先按GET ACCESS TOKEN 按鈕,會跳出一個權限的視窗,你要求 ... DAY 8 0 30天實戰跨平台行動APP系列第 8篇 Day8:FacebookGraphAPI實作 api facebook 鐵人賽 cwchang886 2014-10-0723:57:1421341瀏覽 所以昨天我們已經知道要如何來使用GraphAPI,也知道有一個很棒的測試工具可以幫助你寫程式, 今天就要來試用這些api,看看取回的資料是什麼格式,是否可以如我們想像中順利。

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

GET/{user-id}/permissions 這邊的user-id可以使用me來替代,當然要用public_profile內的user_id應該也是可以的,只是直接用/me比較方便 為了方便,我們就直接使用PHPSDK,PHPcode是 $session=newFacebookSession($access_token); $request=newFacebookRequest( $session, 'GET', '/me/permissions' ); 首先用accesstoken創建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看,或是別忘了,有一個非常好用的GraphAPIExploer: 使用方法很簡單,先按GETACCESSTOKEN按鈕,會跳出一個權限的視窗,你要求什麼就要開啟相對應的權限, 然後選擇GET,POST或DELETE,再輸入node/page/field即可! 所以從結果可以看到返回的事JSON格式的資料,data是一個陣列,裡面的物件有兩個屬性permission跟status。

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

確認權限後,就可以來看看我們能得到什麼資料, public_profile,user_location,email 其中public_profile是基礎的公開資料,只要用戶同意login,就一定可以取得,而user_location跟email是要額外要求的! GET/{user-id}/ 有權限才會有email跟location囉,名字可以讓我們稱呼使用者,email用來註冊,location是我們這app的重點,所以也要取得。

friends GET/{user-id}/friends 接下來我們想要取得朋友列表,但是由exploer測試後發現 怎麼只有幾個而已?我的朋友不止這些啊,難道我被大家unfriend了嗎?QQ 實際上自己測試更慘,取得的資料沒有半位朋友。

經過查詢之後才了解,原來現在只能取得使用者的朋友清單中同樣有在使用你的app並且有開放朋友列表這項權限的人了! 所以用exploer查詢friends,會查到你朋友中也有再用exploer的人,這樣就非常makesense!因為我的名單出現的都是有在寫程式的朋友。

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

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

GET/{user-id}/taggable_friends 就可以取得你全部的朋友清單跟大頭貼噢,問題是這個功能,是讓你可以用app發文時tag朋友的,而且僅限這個用途, 不能用這個取得的id,再來查詢那位朋友的資料!這對我們來說會造成什麼問題待會再提。

user_status GET/{user_id}/statuses 非常猛的一項,會取得你發表過的所有內容,包含照片,影片,打卡,貼文,你去人家那邊留言,但是就是限定你發表的 有些貼文中會有place資料,有些則無。

tagged_places GET/{user-id}/tagged_places 可以顯示出你被標注過的地點!有經緯度資訊! user_photos GET/{user-id}/photos 可以取得使用者被標注的相片,其中資料一樣不一定會有地點資訊 read_stream GET/{user-id}/posts 重頭戲來囉!可以取得用戶的動態牆資訊! 回到第二項user_friends,本來我們的目標是再3D地球上顯示朋友的動態訊息,但是除非說你的朋友也有使用同一個app, 不然是取得不了他的id的。

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

但是沒關係,我已經想到了另一個點子,非常適合用在地球上,只需要FB的location資訊即可, 畢竟仔細想想,若只是看訊息,為何我不用facebook原生的app就好呢? 至於那個點子是什麼,隨著實作的進度大家自然就會理解囉。

留言1 追蹤 檢舉 上一篇 Day7FacebookAPI:GraphAPI 下一篇 Day9:WebGL初探 系列文 30天實戰跨平台行動APP 共26篇 目錄 RSS系列文 訂閱系列文 15人訂閱 22 Day22檢視目標 23 Day23滑鼠輸入 24 Day24Demo 25 Day25整合FB登入 26 鐵人賽25~30 完整目錄 1則留言 0 火爆浪子 iT邦研究生1級‧ 2016-09-2921:36:21 我剛剛有個post到fanpage問題,大大可以幫忙嗎? 回應 檢舉 登入發表回應 我要留言 立即登入留言 iT邦幫忙鐵人賽 參賽組數 1087組 團體組數 52組 累計文章數 20466篇 完賽人數 572人 鐵人賽最新文章 [13th][Day23]httpresponseheader(下) [13th][Day22]httpresponseheader(上) [13th][Day21]golangcontext 股票怎麼選?掌握這原則,你也能找到強勢股 Gitpush 盤點清查與檢測掃描-安全性檢測 完賽心得 2021/11/28更新 C#入门之正则表达式匹配并替换 [Bonus系列]-來看看ReactRouterv6有什麼新功能?和v5有哪些地方不同? 前往鐵人賽 技術推廣專區 [Day2]抓取每日收盤價 [Day1]基本工具安裝 利用python取得永豐銀行API的Nonce [Day03]tinyML開發板介紹 永豐金融API測試員 [Day01]在享受tinyML這道美食之前 [Day3]使用ta-lib製作指標 [Day4]函數打包與買進持有報酬率試算 計算API所需要的參數:HashID 計算API所需要的參數:IV 前往鐵人賽 熱門問題 哪裡有主機板維修的課程? 住宅網路架構 Windows10金鑰匙問題 python抓取cpu溫度 我的電腦(windows10)好像怪怪的,請各位大神協助我解決! 想問一下BAT問題 win10執行vmware+ubuntu會遲鈍 請教影片觀看流量費用預估 想請問這是什麼接頭? 詢問軟體著作權聲明 IT邦幫忙 站方公告 【2021iThome鐵人賽】登登登!究竟獎落誰家,2021iThome鐵人賽得獎名單正式揭曉 熱門tag 看更多 13th鐵人賽 12th鐵人賽 11th鐵人賽 鐵人賽 2019鐵人賽 2018鐵人賽 javascript 2017鐵人賽 windows php python windowsserver linux c# 程式設計 資訊安全 css vue.js sql 分享 熱門回答 哪裡有主機板維修的課程? 住宅網路架構 win10執行vmware+ubuntu會遲鈍 pythonlist問題 SQL語法兩張表關聯其中一張表多筆重複資料取日期最大不用Groupby的方法 請問大神msSQL可以讀取phpldapadmin的使用者嗎? 請問前端Vue+後端Java,要用那個開發工具呢?另外測試及部署的步驟是那些呢(之前是用JQuery+Java,使用Eclipse開發) 套用GCB後產生了一堆問題~~ java例外處理急!!!!! 想請問這是什麼接頭? 熱門文章 股票怎麼選?掌握這原則,你也能找到強勢股 盤點清查與檢測掃描-安全性檢測 Python爬蟲,真的很簡單 用visualstudio寫動物圖鑑網頁 【徵才】當一個很帥的軟體工程師(台北台中限定) Gitpush 徵才【台南永康區】知名食品製造-後台網站管理員 Efficient&LatestECCouncil312-49v10Dumps"2021"|Real312-49v10ExamQuestions&Answers 為了轉生而點技能-JavaScript,day12(閉包Closure及迴圈的閉包陷阱 幾步解決iPhone沒有信號和無服務 一週點數排行 更多點數排行 海綿寶寶(antijava) ㊣浩瀚星空㊣(yoching) raytracy(raytracy) japhenchen(japhenchen) ccenjor(ccenjor) 純真的人(jer5173) fillano(fillano) mathewkl(mathewkl) 一級屠豬士(hitomitanaka) dscwferp(dscwferp) × At 輸入對方的帳號或暱稱 Loading 找不到結果。

標記 {{result.label}} {{result.account}} 關閉



請為這篇文章評分?