Facebook API 开发记录

简介:

注册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数据到https://graph.facebook.com/{app_id}/subscriptions?access_token={token},这个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,社交网站,微博,应用
http://chy710.cnblogs.com/

 

分类:  API集成
本文转自chy710博客园博客,原文链接:http://www.cnblogs.com/chy710/archive/2010/11/26/1888903.html ,如需转载请自行联系原作者
相关文章
|
17天前
|
缓存 监控 API
构建高效可扩展的RESTful API:后端开发的实践指南
【4月更文挑战第26天】在现代Web开发中,构建一个高效、可扩展且易于维护的RESTful API是后端工程师必须面对的挑战。本文将深入探讨如何利用最佳实践和流行技术,设计出符合REST架构原则的服务端接口。我们将重点讨论API版本控制、资源路由、数据库优化、缓存策略以及安全性考虑等方面,旨在为开发者提供一套综合性解决方案,帮助其提升API的性能与可靠性。
|
1月前
|
存储 编解码 网络协议
FFmepg 核心开发库及重要数据结构与API
FFmepg 核心开发库及重要数据结构与API
30 0
|
13天前
|
JSON API 数据处理
【Swift开发专栏】Swift中的RESTful API集成实战
【4月更文挑战第30天】本文探讨了在Swift中集成RESTful API的方法,涉及RESTful API的基础概念,如HTTP方法和设计原则,以及Swift的网络请求技术,如`URLSession`、`Alamofire`和`SwiftyJSON`。此外,还强调了数据处理、错误管理和异步操作的重要性。通过合理利用这些工具和策略,开发者能实现高效、稳定的API集成,提升应用性能和用户体验。
|
13天前
|
缓存 前端开发 搜索推荐
【Flutter前端技术开发专栏】Flutter中的自定义绘制与Canvas API
【4月更文挑战第30天】Flutter允许开发者通过`CustomPaint`和`CustomPainter`进行自定义绘制,以实现丰富视觉效果。`CustomPaint` widget将`CustomPainter`应用到画布,而`CustomPainter`需实现`paint`和`shouldRepaint`方法。`paint`用于绘制图形,如示例中创建的`MyCirclePainter`绘制蓝色圆圈。Canvas API提供绘制形状、路径、文本和图片等功能。注意性能优化,避免不必要的重绘和利用缓存提升效率。自定义绘制让Flutter UI更具灵活性和个性化,但也需要图形学知识和性能意识。
【Flutter前端技术开发专栏】Flutter中的自定义绘制与Canvas API
|
13天前
|
存储 关系型数据库 Go
【Go语言专栏】基于Go语言的RESTful API开发
【4月更文挑战第30天】本文介绍了使用Go语言开发RESTful API的方法,涵盖了路由、请求处理、数据存储和测试关键点。RESTful API基于HTTP协议,无状态且使用标准方法表示操作。在Go中,通过第三方库如`gorilla/mux`进行路由映射,使用`net/http`处理请求,与数据库交互可选ORM库`gorm`,测试则依赖于Go内置的`testing`框架。Go的简洁性和并发性使得它成为构建高效API的理想选择。
|
13天前
|
机器学习/深度学习 算法 安全
深度学习在图像识别中的应用与挑战构建高效可扩展的RESTful API:后端开发的实战指南
【4月更文挑战第30天】 随着计算机视觉技术的飞速发展,深度学习在图像识别领域取得了显著的成果。本文将探讨深度学习技术在图像识别中的应用及其所面临的挑战。首先,我们将介绍深度学习的基本原理和关键技术,然后分析其在图像识别中的优势和应用案例。最后,我们将讨论当前深度学习在图像识别领域所面临的主要挑战和未来的发展趋势。
|
14天前
|
XML JSON API
【PHP开发专栏】PHP RESTful API设计与开发
【4月更文挑战第29天】本文探讨了在Web开发中流行的前后端分离模式,重点介绍了RESTful API的设计与实现。REST是一种基于HTTP协议的架构风格,核心概念包括资源、表述和状态转换。RESTful API设计遵循无状态、统一接口等原则,使用GET、POST、PUT、DELETE等HTTP方法执行操作,并通过状态码和JSON/XML传输数据。在PHP中实现RESTful API,可通过定义路由、创建控制器、处理请求和响应,同时注意安全性措施,如使用HTTPS。文中还提供了一个用户管理API的实战示例,以帮助读者更好地理解和应用RESTful API。
|
16天前
|
缓存 前端开发 JavaScript
【专栏】GraphQL,Facebook 开发的API查询语言,正在前端开发中崭露头角
【4月更文挑战第27天】GraphQL,Facebook 开发的API查询语言,正在前端开发中崭露头角。它提供强类型系统、灵活查询和实时更新,改善数据获取效率和开发体验。掌握GraphQL涉及学习基础概念、搭建开发环境和实践应用。结合前端框架,利用缓存和批量请求优化性能,与后端协作设计高效API。尽管有挑战,但GraphQL为前端开发开辟新道路,引领未来趋势。一起探索GraphQL,解锁前端无限可能!
|
20天前
|
人工智能 机器人 API
【Python+微信】【企业微信开发入坑指北】3. 如何利用企业微信API给微信群推送消息
【Python+微信】【企业微信开发入坑指北】3. 如何利用企业微信API给微信群推送消息
28 0
|
20天前
|
缓存 人工智能 API
【Python+微信】【企业微信开发入坑指北】2. 如何利用企业微信API主动给用户发应用消息
【Python+微信】【企业微信开发入坑指北】2. 如何利用企业微信API主动给用户发应用消息
19 0