百度小程序登陆事件总结(unionid与swanid的区别)

1年前 5629次浏览

最近在做个百度小程序项目涉及到登陆,发现百度小程序的登陆远比微信小程序要复杂。因为百度APP的使用并不强制要求用户登陆。所以我们在做登陆的时侯需要考虑到这一点。

当然百度小程序也考虑到了这一问题,所以百度除了有一个unionid外,还有一个swanid。

swanid根据官方的说法是:用户在同一台设备上使用同一个开发者所开发的不同智能小程序,得到的是相同的 SwanID 。

unionid根据官方的说法是:从用户角度看,每个用户在同一主体下的小程序内unionid是唯一的。

这样就可以得出:

unionid是唯一的,即使你换了手机只要登陆了账号这个unionid还是原来的那一个;

swanid就不一样了,swanid是对一台手机而言是唯一的。

可以通过下面这张图来了解unionid与swanid:

temp.png

swanid只要用户访问了我们的小程序就可以通过swan.getSwanId获得;

但是unionid只有当用户在百度APP中登陆了账号后才可以通过swan.login来获得;

当用户没有登陆百度app时,我们使用swan.login会首先提示用户登陆,但可惜的是这个登陆不是登陆我们的小程序,而是登陆百度app,而即使用户登陆了百度app,我们还需要再向用户授权获得头像名字等信息。

也就是说当我们要实现一个完整的登陆过程,首先要判断用户是否登陆,如果没登陆就让用户先登陆到百度app,用户登陆到百度app后,我们再通过swan.getUserInfo获得用户信息。

如果用户已经登陆了百度app还好说,但是如果用户没有登陆百度app,那用户就会觉得我们的小程序好麻烦,登陆要搞几次。

举例:我在做我练习题小程序的时侯,如果要做练习记录。我只能这样考量,这台手机使用者只有一个人。

用户没有登陆百度app时:使用swanid标识与unionid为空来存储练习记录,并告诉用户当前练习记录是本台手机的练习记录且更换手机手练习记录将消失,如需要跨手机保存练习记录请登陆授权。

当用户登陆了百度app后:就要考虑两种情况:

情况1:练习记录里面当前手机swanid标识有练习记录,提示用户是否导入当前手机未登陆之前的练习记录,并清除swanid标识的练习记录,也就我的练习记录表里面有两个字段swanid与unionid,当用户没登陆时就post传递swanid查询与存储练习记录,当用户登陆后就把当前手机swanid标识的练习记录填上unionid,并清除掉该条练习记录swanid字段的数据。

temp.png

情况2:练习记录里面当前手机swanid标识没有练习记录,那就不用考虑什么了,直接使用swanid为空,unionid为标识来存储练习记录。

总结:swanid针对设备的唯一性,unionid是百度用户的唯一性。

相关评论
暂无相关评论...
发表评论
评论说明:

1、评论暂仅只持纯文字评论。

2、请不要发表与内容无关的评论。

3、评论需要经由审核才能显示出来。

4、评论姓名与链接无要求,只要评论内容符合便可审核通过。