微信小程序手机号登录

写在前面

本文主要记录业务系统,通过小程序的微信授权手机号,实现业务登录。分为:微信授权登录 + 授权手机号

简要流程

流程:

  1. 微信授权/静默登录,微信返回一个 code
  2. 消费登录返回的 code,就可以获取微信基本信息(静默登录只有:openid,unionid),然后业务系统授权登录,返回信息
  3. 手机号授权,因手机号已无法在登录授权信息获取,固需前端通过 button 组件 open-type="getPhoneNumber" 获取,返回:code, encryptedData, iv
    <!--button组件-->
    <button class="login-btn" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">
     <text>授权手机号</text>
    </button>
    # 返回信息
    {
     "errMsg": "getPhoneNumber:ok",
     "encryptedData": "2to78vbONAu6txdUXbEJ5Ir0p3RIilUdkzePRD47I8ka0IPB9F/MkLLXufciAzGzDBR1O57hmBfA7RDC33Va5QY1JQvvFUxKsEKjzSxG1x0rMEWqwAArnKjBiR5GR60mkhxeY5jQYFKZA5y1ZNQ6W+KYhM3rSGRXhzK5ttqXecaT4d+2UvcfnnHtlEEHjlpC7QSUtG5O+3Th+OjYbFoPfQ==",
     "iv": "zB4mrGz5wr/uAfjaftuFDw==",
     "code": "2b9d161e71e66a4fb5857bab3aeb5d0db6b37342e63e280c9c881d3c2d8ebf71"
    }
    流程图参考:
    微信小程序手机号登录

注意:

  1. 消费 wx.login 返回的 code 会得到 openid,unionid。其中 unionid 为微信全平台 唯一id 一般用于业务系统打通微信开放平台其他应用时使用,而 openid 是登录唯一标识(类似业务系统登录的 token),一般返回前端本地存储,做后续业务逻辑时使用,如:消费code获取手机号时可根据 unionid 绑定账号。
  2. 消费返回的 code 获取手机号,通过接口 getPhoneNumber 获取。
    参考:developers.weixin.qq.com/miniprogr...
  3. 解密返回的 encryptedData + iv 获取手机号(历史版本虽不推荐,但好在免费)。
    注意:解密还需参数 session_key (后端消费登录code返回的参数 session_key)

注意事项:
自2023年8月26日起,手机号快速验证组件将需要付费使用,当然【公益性组织】除外。
标准单价:每次组件调用成功,收费0.03元;体验额度:每个小程序账号 1000 次。

备注

EasyWeChat 工具包,文档:easywechat.com/6.x/mini-app/utils....

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!