Facebook Connect
Facebook Connect 和 Google Friend Connect 是 Facebook 和 Opensocial 的升级.
SNS 的作用有两点:
1. 它们至少起到一个 openid 的左右, 你只需要一个帐号遍可以使用 Facebook 中的所有 App. 既然只使用一个id, 所以添加好友的工作也只需要做一次.
2. 每一个 App 都可以使用到好友信息, 起到SNS传播的作用.
这里写一写 Facebook Connect 的原理.
首先说一说传统 Facebook App 原理:
1. 传统 Facebook App 的是采用 POST, 我们在 Facebook 的 canvas 里所有的操作, 都回转化为对自己 App Server 的 POST 请求.
2. 除了自己的应用程序的数据以外, 还有很多以 fb_sig_ 打头的 POST 数据... 这些数据告诉你用户id, 用户朋友id...等等
3. 为了不让任何Facebook以外的冒牌请求折腾你的App Server, Facebook 在 POST 里面加上了 fb_sig 的签名. 所有的数据按照特定的排列以后md5, 结果和签名相等才可以.
Facebook Connect 要求在你服务器上放一个 html 文件用于 callback (当然你也可以命名为.php结尾)
1. 用户在你的站点上, 使用 Facebook 帐号登录你的站点, 成功以后 Facebook 会 callback 放置在你网站上的 html 文件, 该文件中的js代码负责写一些 cookies 到你浏览器本地.
2. Cookies的用途和传统 Facebook App 中 fb_sig 打头的 POST 数据一样, 具有签名作用. 传统的 Facebook App 中 Facebook 可以直接 POST 请求 App Server. 这里只能采取间接的方式, Facebook 写 cookies 到本地浏览器, 浏览器提交cookies给App Server, App Server 则可以验证用户是否登录了 Facebook, 并且取得用户的好友信息.
为了验证这些 cookies, 使用 Facebook 官方的 PHP 库可以解决问题. 如果使用 minifb.py, 需要做一定修改, 这里有我修改过的 minifb.py 版本
validate最后一个apikey是可选参数, 用来 valid cookies 的时候必须要加上这个参数. 需要注意的是, 如果在 GAE 上使用, 需要将 urllib2 替换为 urlfetch.
SNS 的作用有两点:
1. 它们至少起到一个 openid 的左右, 你只需要一个帐号遍可以使用 Facebook 中的所有 App. 既然只使用一个id, 所以添加好友的工作也只需要做一次.
2. 每一个 App 都可以使用到好友信息, 起到SNS传播的作用.
这里写一写 Facebook Connect 的原理.
首先说一说传统 Facebook App 原理:
1. 传统 Facebook App 的是采用 POST, 我们在 Facebook 的 canvas 里所有的操作, 都回转化为对自己 App Server 的 POST 请求.
2. 除了自己的应用程序的数据以外, 还有很多以 fb_sig_ 打头的 POST 数据... 这些数据告诉你用户id, 用户朋友id...等等
3. 为了不让任何Facebook以外的冒牌请求折腾你的App Server, Facebook 在 POST 里面加上了 fb_sig 的签名. 所有的数据按照特定的排列以后md5, 结果和签名相等才可以.
Facebook Connect 要求在你服务器上放一个 html 文件用于 callback (当然你也可以命名为.php结尾)
1. 用户在你的站点上, 使用 Facebook 帐号登录你的站点, 成功以后 Facebook 会 callback 放置在你网站上的 html 文件, 该文件中的js代码负责写一些 cookies 到你浏览器本地.
2. Cookies的用途和传统 Facebook App 中 fb_sig 打头的 POST 数据一样, 具有签名作用. 传统的 Facebook App 中 Facebook 可以直接 POST 请求 App Server. 这里只能采取间接的方式, Facebook 写 cookies 到本地浏览器, 浏览器提交cookies给App Server, App Server 则可以验证用户是否登录了 Facebook, 并且取得用户的好友信息.
为了验证这些 cookies, 使用 Facebook 官方的 PHP 库可以解决问题. 如果使用 minifb.py, 需要做一定修改, 这里有我修改过的 minifb.py 版本
validate(secret, params, apikey)
validate最后一个apikey是可选参数, 用来 valid cookies 的时候必须要加上这个参数. 需要注意的是, 如果在 GAE 上使用, 需要将 urllib2 替换为 urlfetch.
feed