Facebook的authentication

转自:http://www.javaeye.com/topic/177929


Facebook的authentication

 

  Facebook的认证过程其实不复杂, 但是如果java程序捧着官方提供的java包捣腾,恐怕还要费些功夫,官方那个只提供了桌面应用的认证程序,而web应用的认证过程则大厢径庭。

 

  应用程序在注册时会获得该应用的api_key和secret,这实际上是访问该应用的用户名和密码了,只有开发人员可以看到。事实上以后的每次调用facebook api都会带上这api_key,但这显然还不够,登录用户必须拥自己特定的信息:sessionKey,每次调用带上这个key才能将用户的信息关联(类似于tomcat的jsessionid),因此认证的主要目的就是拿到sessionKey。

 

  外部web应用的认证过程:这种应用只通过web services与facebook集成,这种应用唯一要做的是获得取得调用web services的权限,上图的流程很清楚了。如果用java开发,一般先用一个filter或其它interceptor拦截,如果发现没有登录 facebook应用自动导到facebook的login页面(在request的参数里将登录完后回来的页面传进去),登录后跳回到原来的页面,就可以在filter中通过request里的authtoken获取sessionKey了,这种应用一般将认证后的sessionKey放到HttpSession就可以了(以后不用重复认证)。

 

  fbml应用的认证过程:事实上内部应用的authentication远比外部应用简单,但是官方竟然没提供文档。由于facebook的用户必须登录才能使用,实际上在使用 facebook应用时用户已经登录并拥有了sessionKey和user_id等参数,因此在中间人(facebook server)中转到应用的url时,它在request里会把sessionKey和userId等参数传进去,因此在拿到这些参数后客户端可以直接进行任何web services的调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值