微信公众号未关注用户的体验优化


背景

有个基于微信公众号的产品,会展示用户信息。

如果用户未关注公众号,微信静默授权(scope:snsapi_base)则拿不到昵称(nickname)。如果想拿到昵称就只能显式授权(scope:snsapi_userinfo)。

优化

为了保证已关注用户的体验,应该是用静默授权。拿到openid,查询是否已经保存了用户信息。如果没有,则再显示授权,拿到用户信息后,保存到数据库。这样,用户虽说未关注,但下次访问时就不需要显示授权了(当session过期后,仍旧需要跳转到显示授权页面,但微信可能会提示:近期已经授权过,就自动跳回来了~)。

细节

设:静默授权拿到的用户信息为base,显式授权拿到的信息为detail。

未关注用户:

静默授权,base中nickname为null,detail不包含nickname字段

显示授权,base中nickname为用户昵称,detail中不包含nickname字段

已关注用户:

静默授权,base中nickname为null,detail中nickname字段为用户昵称

无需显示授权~

 

这里还需要注意一下~ 跳转授权页面要防止无限循环跳转~ 代码逻辑写健壮点儿~ 否则微信会封公众号的授权一段时间(几分钟)别问我怎么知道的。。。

 


发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注