如何管理小程序用户信息?登陆、获取用户名和头像、维护session等等

微信小程序的“小”字迷惑了很多人,至今许多人仍然任务小程序很容易(微信也是这样宣传)。其实不然,小程序的门槛不低,虽然可以简单拼凑一个简单的小程序,但要达到实用、好用,需要花费的功夫依然不少。就像能写 Hello World!并不表示你掌握了一门编程语言。

说个实际的例子,用户登陆态的维护就挺麻烦,官方推荐后端产生 session,自己维护用户登陆态,但官方没有提用户取消授权的处理,所以在实际中, 除了判断自定义 session key 之外,首先得判断用户是否授权了。

总的说来,用户基本状态有三种:

  • 首次访问,或使用了新的手机,或是重装了微信。此时用户没有 session key。
  • 用户有 session key,但未授权访问昵称、头像。
  • 用户有 session key,并且授权访问昵称、头像。

授权获取用户名和头像

以前可以调用 wx.getUserInfo() 已经失效,目前唯一可以获取用户名和头像的方式是使用 button ,设定 open-type 为 getUserInfo

<button open-type=“getUserInfo” lang=“zh_CN” bindgetuserinfo=“onGotUserInfo”>获取用户信息</button>

js 文件中:

onGotUserInfo: function(res) {
    console.log(res.detail.userInfo);
}

如果用户拒绝授权,返回的 res.detail.userInfo 是 undefined;如果用户同意授权,则是这个对象:

{
        avatarUrl:
https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTJtsmOQO4h7r0w6HwJICCpOMfHVfrvcBsZ6DjTY3X0zK9eGMO8CHIYax8lxyONd0vfktI2gIDaknw/139”,
        city: “海淀”,
        country: “中国”,
        gender: 1,
        language: “zh_CN”,
        nickName: “张三”,
        province: “北京”
}

session

按照微信官方解释:

通过 wx.login() 获取到用户登录态之后,需要维护登录态。开发者要注意不应该直接把 session_key、openid 等字段作为用户的标识或者 session 的标识,而应该自己派发一个 session 登录态(请参考登录时序图)。

因此如果只需要识别微信用户,就可以静默获取openid,无需弹出授权框。

如果要获取用户昵称、头像等,或其他信息,需要弹出用户授权登陆框。

另外还有一个函数常引起开发者迷惑:

wx.checkSession()

这个函数通常不需要调用,甚至,其设计就是一个接口冗余。一是用户登陆态由服务器维护,并不需要向微信验证用户登陆态。二是,当我们需要用户处于登陆才能做某些操作时,比如用session_key来解密用户群组,可以有两种处理方法:

  1. 服务器维护的登陆态同样有会话实效,过期时间与微信的一致,都设置为7200秒。一旦实效过期,重新发起一次wx.login(),更新记录信息。
  2. 在特定操作实效的时候,重新发起wx.login(),更新登陆信息,再次进行特定操作。

微信推荐的是第一种。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值