博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Facebook API 开发记录
阅读量:7127 次
发布时间:2019-06-28

本文共 2315 字,大约阅读时间需要 7 分钟。

注册App

Application里有个应用叫Developer,加入后可以注册新应用。点击“set up new application”输入应用的信息提交即可。开发者首页好像没有相关的链接入口,这点不方便。

 

权限验证

现在的社交、微博网站大多都采用标准的OAuth验证,Facebook也不例外,这点必须滴。用户登录是在Facebook的网站页面输入帐号密码,登录成功后会重定向到你的页面从而获取Token,之后访问API使用Token来验证。你的应用只需要拿到用户的Token即可,整个过程你是接触不到用户的帐号和密码的。即使你拿到帐号也没用,API只认Token。相比HTTP Basic Authentication(HTTP Header中增加Bae64过的帐号和密码),整个做法复杂化了,但是安全了。Basic Authentication时代开发者可以随心所欲,做各种各样的应用。OAuth之后最麻烦的就是验证,特别是对桌面或移动应用,一般都在窗体中嵌入一个浏览器控件来完成。

 

获取Token

1) 访问https://graph.facebook.com/oauth/authorize?client_id={app_id}&redirect_uri={app_url},如果用户没有登录,则登录,提示用户是否允许应用访问自己的数据,既是否授权允许。Facebook返回到你的应用,带一个code参数: {app_url}?code={code}

2)访问https://graph.facebook.com/oauth/access_token?client_id={app_id}&redirect_uri={url}&client_secret={app_secret}&code={code}
Facebook返回到你的应用,body中有access_token,你可以在你的应用里存储用户token,默认60分钟过期,你可以增加offline_access权限让它不过期。
整个过程是比较简单的,不用作签名之类的。麻烦的是必须跳到facebook网站验证,如果是做客户端应用会影响体验。

 

访问API

访问需验证的Function加上access_token参数即可,GET或POST看具体函数而定,API统一返回JSON格式的数据,没有别的选择,不像Twitter的选择很多。请求中也不用做签名。

 

权限

Facebook的权限分得异常的细,默认你只能访问用户最基本的信息,比如你想获取一个设置了隐私(只对朋友开放)的用户的statu,需要read_stream权限,你想post statu需要publish_stream权限,你想获取用户的email帐号需要email权限等等。所以最好根据你的应用确定需要那些权限,在用户首次使用做权限验证时开通相应的权限,否则后面使用中会达不到你期望的结果。
提升权限
访问:https://graph.facebook.com/oauth/authorize?client_id={app_id}&redirect_uri={app_url}&scope=publish_stream,offline_access,user_status,read_stream
scope后面跟的就是权限,每个用逗号分开,可以有多个。

 

更新通知

Real-time Updates,当你的用户有更新时,Facebook可以通知你,这是一个很有用的功能,可以实时接受用户的更新。

1) 创建一个订阅,默认你的应用是没有更新通知的,你需要先创建一个订阅,告诉Facebook我需要更新通知。

POST数据到},这个token是应用的token不是用户的token,注意url是https,不是http(文档是错的),参数:object,fields(你需要监视用户的那些更新),callback_url,verify_token(你自己指定一个验证用),提交这个请求后就创建了一个订阅。提交POST时候你的callback_url必须存在且可以访问,Facebook会Get此url验证是否存在。

2) 接受更新,创建好订阅后当用户有更新时,Facebook会通知此url告诉你有更新(POST),你将收到的更新内容为JSON格式,如:“{"object":"user","entry":[{"uid":"100001548188940","id":"100001548188940","time":1301731097,"changed_fields":["feed"]}]}”,表示该用户更新了状态,不包括更新的内容。当然,返回可能是个集合。

你收到数据后可以做相应的更新处理,根据你的应用这个post频率可能会高(监视的是使用你应用的所有用户),得考虑的你的程序性能。

 

小结

Facebook是一个很全面的社交网站,其API也很丰富,有Friends,Feed,Like,Music,Photo,Events,Checkin...等等,文档也比较多。但具体使用上就简单了,至少每次请求API不用签名,相比Twitter,Douban等省事多了。关键得花时间研究透他的文档,文档里有详细的说明,问题都可以通过文档解决。

 

关键字:Facebook,API,社交网站,微博,应用

 

分类: 
本文转自chy710博客园博客,原文链接:http://www.cnblogs.com/chy710/archive/2010/11/26/1888903.html
,如需转载请自行联系原作者
你可能感兴趣的文章
Redis cluster学习 & Redis常识 & sort操作
查看>>
mysql 中实现多条数据同时更新
查看>>
2011 ACM/ICPC 成都赛区(为2013/10/20成都现场赛Fighting)
查看>>
Linux技术进阶示意图
查看>>
php设计模式课程---6、策略模式如何使用
查看>>
html5--6-8 CSS选择器5
查看>>
20145328 《信息安全系统设计基础》第6周学习总结
查看>>
python学习笔记:"爬虫+有道词典"实现一个简单的英译汉程序
查看>>
基于theano的深度卷积神经网络
查看>>
vCenter 部件关系简介 & 网络原理
查看>>
Mysql优化的方法
查看>>
Web.config或App.config中数据库链接路径的问题
查看>>
CPrintDialog 构造函数参数详解
查看>>
foreign key
查看>>
【二分答案】【字符串哈希】bzoj2084 [Poi2010]Antisymmetry
查看>>
Hbase 参数配置及优化
查看>>
看病要排队(stl)
查看>>
springMVC的controller返回值
查看>>
Httpclient与RestTemplate的比较(比httpClient更优雅的Restful URL访问)
查看>>
instance of
查看>>