您的位置:首页 > 其它

Facebook开放平台学习 - 对token失效或者某个接口权限么有授权的处理

2012-09-27 15:30 375 查看
今天总结下Facebook授权应用后,如果token失效后或者调用某个接口的时候,这个权限,用户没有授权该怎么办?

如果你的应用程序和Facebook紧密相连,要依靠很多它的扩展接口(不明白扩展接口的请看另一篇:Facebook的接口说明),那么在用户授权的时候,就会出现在第二页,比如下图:



 



 

这些权限,用户是可以不授权的,可以叉掉的,但是不能叉掉所有权限,因为如果用户叉掉了所有扩展权限,授权过程就不能走下去,会跳回到你原来的调用起来的界面。

Facebook的token现在有效期是60天,会转换成Unix时间戳来显示,具体计算结果,我可以说说,因为当时这个地方困扰了我很久。token失效的原因有三种,我现在就知道3种:用户授权给你的应用后,改了密码;还有就是授权时间超过了60天;还有用户在account setting界面的app中删除了授权的应用。因此,我们一定在自己的应用中加上处理token失效的代码,至于如何处理,我的建议是引导用户重新走一遍授权的流程就OK,重新保留一下新的token。当然,这是最傻的办法,我们应该想办法让这个token不过期,怎么才能实现这个功能呢?

在Android的SDK中,有这样的方法,就是每当用户进入APP的时候就刷新一次token,前提是距离用户上次刷新token的时间超过24小时,这个计算方式在SDK中有源码,可以具体看看。但是如果用户比较频繁的用你的APP的话,比较浪费流量,这是个大问题,尤其在国内。然后我想了想,把这个时间改改,就是可以改成超过10*24的时候才刷新token,这样就可以接受了。还有一种办法,就是保存下来下发的过期时间这个值:expires,当用户每次进入你的APP的时候,计算这个过期时间离过期还有几天,如果过期时间在10天以内,就主动给用户刷一次token,这样就能保证用户的token永远都不会过期,前提是用户不再account
setting中删除你的应用。

 

其实解决办法有很多,关键看你们的产品需求,和服务端、产品人员一起协商一个好办法,没有最好,只有更好。

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息