本文旨在介绍facebook的graph api
graph API 简介
facebook的graph api是一套REST化的api,通过统一而稳定URL定义请访问数据对象,通过对http协议的GET,POST,DELETE三种请求进行数据操作的细分,响应JSON格式的数据包,组成了facebook的 graph api。
- 首先看一个get请求的例子
https://graph.facebook.com/100000588112696,抓取User对象,格式客户端需要对response解析json格式,返回值如下。facebook-android/ios本身提供了sdk可以对json格式进行解析,其他平台需要额外写一套解析器来解析json格式。
{ "id": "100000588112696", "name": "Jiqiang Bi", "first_name": "Jiqiang", "last_name": "Bi", "link": "http://www.facebook.com/bijiqiang", "username": "bijiqiang", "gender": "male", "locale": "zh_CN" }
- 再来看一个post请求的例子
https://graph.facebook.com/100000588112696/feed/ 创建一个post请求的http将参数传入
{ "caption": "realgodo", "name": "realgodo", "link": "http://realgodo.iteye.com", "description": "Coming from my app", "link": "http://www.facebook.com/bijiqiang", "picture":"http://www.iteye.com/upload/logo/user/583286/acd59a73-6a14-3a17-a0ae-4ac30d5c43c8.png?1320570681" }
返回的数据是
{ "id": "100000588112696_302491803113754"
}
graph Api能做什么
- 抓取(fetch)
可以查看全部可以使用的graph api 包括必要的参数,一般就是access_token。
首先 看一组使用access_token的get型接口列表,主要是抓取数据。
"home": "https://graph.facebook.com/100000588112696/home?access_token=", "feed": "https://graph.facebook.com/100000588112696/feed?access_token=", "friends": "https://graph.facebook.com/100000588112696/friends?access_token=", "mutualfriends": "https://graph.facebook.com/100000588112696/mutualfriends?access_token=", "family": "https://graph.facebook.com/100000588112696/family?access_token=", "payments": "https://graph.facebook.com/100000588112696/payments?access_token=", "activities": "https://graph.facebook.com/100000588112696/activities?access_token=", "interests": "https://graph.facebook.com/100000588112696/interests?access_token=", "music": "https://graph.facebook.com/100000588112696/music?access_token=", "books": "https://graph.facebook.com/100000588112696/books?access_token=", "movies": "https://graph.facebook.com/100000588112696/movies?access_token=", "television": "https://graph.facebook.com/100000588112696/television?access_token=", "games": "https://graph.facebook.com/100000588112696/games?access_token=", "adaccounts": "https://graph.facebook.com/100000588112696/adaccounts?access_token=", "likes": "https://graph.facebook.com/100000588112696/likes?access_token=", "posts": "https://graph.facebook.com/100000588112696/posts?access_token=", "tagged": "https://graph.facebook.com/100000588112696/tagged?access_token=", "statuses": "https://graph.facebook.com/100000588112696/statuses?access_token=", "links": "https://graph.facebook.com/100000588112696/links?access_token=", "notes": "https://graph.facebook.com/100000588112696/notes?access_token=", "photos": "https://graph.facebook.com/100000588112696/photos?access_token=", "albums": "https://graph.facebook.com/100000588112696/albums?access_token=", "events": "https://graph.facebook.com/100000588112696/events?access_token=", "groups": "https://graph.facebook.com/100000588112696/groups?access_token=", "videos": "https://graph.facebook.com/100000588112696/videos?access_token=", "picture": "https://graph.facebook.com/100000588112696/picture?access_token=", "inbox": "https://graph.facebook.com/100000588112696/inbox?access_token=", "outbox": "https://graph.facebook.com/100000588112696/outbox?access_token=", "updates": "https://graph.facebook.com/100000588112696/updates?access_token=", "accounts": "https://graph.facebook.com/100000588112696/accounts?access_token=", "checkins": "https://graph.facebook.com/100000588112696/checkins?access_token=", "apprequests": "https://graph.facebook.com/100000588112696/apprequests?access_token=", "friendlists": "https://graph.facebook.com/100000588112696/friendlists?access_token=", "friendrequests": "https://graph.facebook.com/100000588112696/friendrequests?access_token=", "permissions": "https://graph.facebook.com/100000588112696/permissions?access_token=", "notifications": "https://graph.facebook.com/100000588112696/notifications?access_token=", "scores": "https://graph.facebook.com/100000588112696/scores?access_token="
- 查询功能(search)
All public posts: https://graph.facebook.com/search?q=watermelon&type=post People: https://graph.facebook.com/search?q=mark&type=user Pages: https://graph.facebook.com/search?q=platform&type=page Events: https://graph.facebook.com/search?q=conference&type=event Groups: https://graph.facebook.com/search?q=programming&type=group Places: https://graph.facebook.com/search?q=coffee&type=place¢er=37.76,122.427&distance=1000 Checkins: https://graph.facebook.com/search?type=checkin
- 发布功能(publish)
https://graph.facebook.com/${PROFILE_ID}/feed
https://graph.facebook.com/${OBJECT_ID}/comments https://graph.facebook.com/${OBJECT_ID}/likes https://graph.facebook.com/${PROFILE_ID}/notes https://graph.facebook.com/${PROFILE_ID}/links https://graph.facebook.com/${PROFILE_ID}/events https://graph.facebook.com/${EVENT_ID}/attending https://graph.facebook.com/${EVENT_ID}/maybe https://graph.facebook.com/${EVENT_ID}/declined https://graph.facebook.com/${PROFILE_ID}/albums https://graph.facebook.com/${ALBUM_ID}/photos https://graph.facebook.com/${PROFILE_ID}/checkins
${PROFILE_ID}是User.id,${ALBUM_ID}是Album.id
- 删除功能
https://graph.facebook.com/${ID}?access_token=... HTTP/1.1
${ID}是对象的主键,规则是${User.id}_${Object.id}
其他的功能类别还包括分析(Analytics),批量操作(Batch Requests)
- graph api class介绍
Achievement 附件
用户的附件
Album 相册
招聘相册
Application应用程序
在facebook注册的应用程序
Checkin签到
Comment评论
Domain域名
Event facebook事件
FriendList 朋友列表
Group 群组
Insights 统计分析
app,页面,域名的统计分析结果
Link 链接
分享的链接
Message 消息
线程内消息
Note提示
Page 页面
Photo照片
Post 涂鸦墙内容
Question 问题
用户提问
QuestionOption 备选答案
用户提问的一个备选答案
Review反馈
对app的反馈
Status message 涂鸦墙消息
Subscription订阅
Thread 消息线程
User 用户
Video 视频