评论

小程序“表面一键获取手机号、头像、昵称”的思路

本文技术已过时,open-data 展示用户个人信息的能力已被回收。

看到有同学在开发群里问:有些小程序为啥可以一步获取手机号和头像昵称?

正巧自己的项目最近也做了这个改造,其实只是获取了手机号,头像昵称是通过 open-data 组件展示,并没有真正获取。

提供一套登录流程思路:

  1. 用户初始访问页面时,通过云函数,拿到当前微信用户的 openid;
  2. 用这个 openid 去查询数据库,能查到则直接登录,查不到则弹出手机号授权,注册新用户;
  3. 用户登录后判断,如果数据库里已有头像昵称则直接展示,如果没有则用 open-data 组件展示头像昵称;
  4. 当用户触发某个流程时(例如支付流程),判断是否有头像昵称,没有则弹出获取头像昵称的授权,更新数据库。

这样做登录流程还有一个好处,用户只在注册时会弹出授权框,后续都是无感登录。

注意:可以在本地存储记住用户 openid,以便在上述第一步和第二步中判断使用。即便用户点击退出登录按钮也不要清除本地存储的 openid,而是用另一个本地存储键值去标记登录状态。

2021-12-28 更新:

今天在开发工具突然看到这个提示:https://developers.weixin.qq.com/community/develop/doc/000e881c7046a8fa1f4d464105b001

看起来,这个带有争议性的能力,官方在上线三年多之后,终于意识到问题的严重性了。

最后一次编辑于  2021-12-28  
点赞 0
收藏
评论

2 个评论

  • 朱高
    朱高
    2021-12-28

    本文技术已过时,open-data 展示用户个人信息的能力即将被回收。

    2021-12-28
    赞同
    回复
  • 朱高
    朱高
    2021-12-08

    云函数获取 openid 很方便:

    const getOpenid = async () => {
      const { OPENID } = cloud.getWXContext()
      return OPENID
    }
    
    2021-12-08
    赞同
    回复
登录 后发表内容