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

授权获取用户名和头像

以前可以调用 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(),更新登陆信息,再次进行特定操作。

微信推荐的是第一种。

阅读更多

扫码向博主提问

去开通我的Chat快问

henryhu712

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • 微信小程序
  • 小程序
  • 微信开发
  • PHP
  • Linux
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/henryhu712/article/details/80691941
文章标签: 小程序 登陆 session
个人分类: 微信小程序
所属专栏: 微信小程序开发
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭