小程序“表面一键获取手机号、头像、昵称”的思路
发布于 3 年前 作者 jiayan 4439 次浏览 来自 分享

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

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

提供一套登录流程思路:

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

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

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

2021-12-28 更新:

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

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

2 回复

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

云函数获取 openid 很方便:

const getOpenid = async () => {
  const { OPENID } = cloud.getWXContext()
  return OPENID
}
回到顶部