最近项目中接入facebook sdk ,基本没有什么出问题的地方,但是也有几个坑记录一下
facebook打点问题
facebook的打点接口
public static void LogAppEvent(string logEvent, float? valueToSum = null, Dictionary<string, object> parameters = null);
在打点时候如果不需要上传参数,那么parameters这个参数一定要传null,不能传一个空的dictionary,因为这个接口有个问题,如果parameters的长度小于2打点就会上传不成功,但是null是可以打点成功的,因此在调用的时候做一个处理,如果参数是空的直接传入null,如果参数小于两个就补充至两个,可以补充一些无意义的键值对,只要数量不低于2就行
facebook重复登录问题
facebook的登录接口可以看文档里面,正常传参调用是没有问题的,但是策划提出了一个在游戏中切换Facebook账号的需求,这个地方特别坑,按照正常的流程不管是绑定还是切换facebook账号,对于前端来说都是调用的facebook登录然后玩家输入账号,我们获取到assetToken,然后把userid和tokenstring发给服务器进行校验,但是如果我们成功登录过一次facebook,那么本地就会保留这个账号的token,再次调用facebook登录的时候就会自动使用这个token登录,没有办法选择,只有打开手机上的facebook app在里面手动登出,这里才会恢复正常让你输入账号,我试过在调用登录之前先调用LogOut()接口登出,但是没有用,不知道facebooksdk里面这个接口登出的是啥,反正清除不掉本地记录的token,结果就是没有办法切换账号,只要登录过一次facebook,那么要么就等这次的token过期,要么就手动在facebook app中登出,否则的话就没法切换账号,我试了一下现在已经上线的游戏的切换Facebook账号,也是这样,目前没有解决方案
今天发现了facebooksdk中logout的作用,sdk中的logout只是清除了在unity中记录的assetToken,重复登陆是因为在网页和facebookapp中保留了token,这个无法清除,我在项目中遇到的bug是在游戏中切换了facebook账号之后每次从sdk的返回中拿到的userid都是同一个,于是想到了logout函数,在登陆之前先调用logout清除unity的缓存就可以解决这个问题