提高用户体验,我如何优雅的处理用户信息呢?
发布于 5 年前 作者 xiulanyang 10269 次浏览 来自 问答

萌新直接上代码了

个人中心页面, 我给个按钮让用户登录。

<button  open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 点击登录</button>

点击登录调下面这个方法,

getUserInfo(e) {
  const userInfo = e.detail.userInfo;
  app.getUserInfo(userInfo).then(res => {
    this.setData({
      userInfo: res,
      hasUserInfo: true
    })
  }).catch(res => {
    console.log(res)
  })
 
},

app.js

getUserInfo(e){
    return new Promise((resolve, reject) => {
      const userinfo = this.getCache('userinfo');
      if (userinfo){
        resolve(userinfo)
      }else{
        if(e){
          this.setCache('userinfo', e);
          this.globalData.userInfo = e;
          resolve(e)
        }else{
          reject('用户没授权')
        }
      }    
    })
  },

我现在做法是,用户点击登录按钮后, 我拿到用户的公开信息, 我存到本地,

问题:用户微信更改了头像名字和其他公开信息后, 我这边如何获取。(以前都是判断session_key是否过期,通过wx.login,过期了在重新走登录流程,用getuserinfo的api直接获取信息在更新本地存储)

getuserinfo废弃后,就算session_key过期我更新登录态,也无法更改本地存储的,因为废弃后,获取公开信息必须用户手动触发按钮了,那个open-data貌似也不会返回用户的公开信息。

萌新求教~~~感激不尽

10 回复

现在已经是30号的凌晨,接口的变化在开发版仍然没体现出来

只能等了,真苦逼

sessionKey本来就是存在后端的,不应该放在前端

在一些需要的情况先调用wx.checkSeeion去校验失效了没,失效了的话就请求后端重新存储

也遇到了多个问题, 正式环境下,因为session_key过期, 后台抛了好多解密错误信息  

sessionKey 本来就应该放在后端,蛋疼的是它的有效期未知。如果需要我前面说的业务要求,则极端情况下,两次调用间隔过久,需要处理一堆异常情况。

缓存sessionKey才是王道.

就是说,这么重要的更改,文档说的那么模糊,关键疑问根本不解释清除,提问的点也不说清楚,感觉就像官方在躲避这个问题的解答一样

用户信息接口更改的疑问

如button的getUserInfo内部实现将session_key缓存前端, 也是不安全的,  后端缓存session_key在所难免了,  我这苦逼的已经改了。

噢啦, 等5 1回来在看看情况吧,

回到顶部