微信小程序之微信授权登入及授权的流程讲解

2024-03-25 8167阅读

一、微信登录流程讲解

1. 微信登录图解

微信小程序之微信授权登入及授权的流程讲解 第1张

2.认识openid,unionid 和code

2.1 openid

openid是用来唯一标识用户的一个字符串。在微信小程序中,每个用户的openid都是唯一的。通过openid,小程序可以获取用户的基本信息,如头像、昵称等。

注意: 同一个用户在不同的小程序中拥有不同的openid。因此,在开发小程序时,不能使用openid来进行用户的唯一性判断。

2.2 unionid

unionid是在用户绑定同一微信开放平台账号下的多个应用时,用来唯一标识用户的一个字符串。如果用户在多个小程序中使用同一个微信号进行登录授权,那么这些小程序中的unionid都是相同的。

注意: 用户的unionid只有在用户将多个应用绑定到同一个微信开放平台账号下时才会生成。因此,如果用户没有绑定多个应用,那么小程序将无法获取用户的unionid。

2.3 code

code是用户登录凭证,由微信服务器颁发给小程序。在用户授权登录后,小程序可以通过调用微信登录接口获取用户的code。然后,通过code向微信服务器请求用户的openid和session_key等信息。

注意: 每个code只能使用一次,且有效期为5分钟。因此,在使用code进行登录时,需要及时将其转换成用户的openid和session_key等信息,以免出现code过期的情况

openid、unionid和code是微信小程序登录授权中非常重要的三个参数,了解这些参数的作用和用法,有助于开发者更好地设计和开发小程序登录授权功能。

解释:

  • 通过wx.login()获取code。
  • 将这个code发送给后端,后端会返回一个token,这个token将作为你身份的唯一标识。
  • 将token通过wx.setStorageSync()保存在本地存储。
  • 用户下次进入登录界面时,会先通过wx.getStorageSync() 方法判断token是否有值,如果有值,则可以请求其它数据,如果没有值,则进行登录操作

    二、登录方法讲解

    wxLogin

    调用接口获取登录凭证(code)。通过凭证进而换取用户登录态信息,包括用户在当前小程序的唯一标识(openid)、微信开放平台账号下的唯一标识(unionid,若当前小程序已绑定到微信开放平台账号)及本次登录的会话密钥(session_key)等。用户数据的加解密通讯需要依赖会话密钥完成。

     

    效果图:

    微信小程序之微信授权登入及授权的流程讲解 第2张

    该方法对于用户的体验及安全性问题有所欠缺,点击就直接获取到了用户的信息,进行了一个显示,这个方法官方已经不推荐了。

    • wx.getUserProfile

      获取用户信息。页面产生点击事件(例如 button 上 bindtap 的回调中)后才可调用,每次请求都会弹出授权窗口,用户同意后返回 userInfo。该接口用于替换 wx.getUserInfo,详见 用户信息接口调整说明。

      效果图:

      微信小程序之微信授权登入及授权的流程讲解 第3张

      微信小程序之微信授权登入及授权的流程讲解 第4张

       需要用户允许才能进行下一步,安全性大大提高

      三、数据交互授权登入

      1. 前端

       api.js

      // 以下是业务服务器API地址
       // 本机开发API地址
      var WxApiRoot = 'http://localhost:8080/oapro/wx/';
      // 测试环境部署api地址
      // var WxApiRoot = 'http://192.168.191.1:8080/oapro/wx/';
      // 线上平台api地址
      //var WxApiRoot = 'https://www.oa-mini.com/demo/wx/';
       
      module.exports = {
        IndexUrl: WxApiRoot + 'home/index', //首页数据接口
        SwiperImgs: WxApiRoot+'swiperImgs',
        MettingInfos: WxApiRoot+'meeting/list',
        AuthLoginByWeixin: WxApiRoot + 'auth/login_by_weixin', //微信登录
        UserIndex: WxApiRoot + 'user/index', //个人页面用户相关信息
        AuthLogout: WxApiRoot + 'auth/logout', //账号登出
        AuthBindPhone: WxApiRoot + 'auth/bindPhone' //绑定微信手机号
      };

      个人中心

      index.wxml

          
              
                  

    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]