你还有不知道一个小程序--企业微信小程序!!

818 阅读4分钟

前言

平常开发都是微信小程序,它是运行于微信应用App的小程序,最近碰巧要开发一个企业微信小程序,有点慌张~,特意了解下,记录下酱子~

企业微信小程序是什么

企业微信小程序是运行于企业微信App里面的小程序,本质上企业微信小程序是微信小程序的一个扩展子集,微信小程序的大部分能力都可以在企业微信上运行,同时企业微信扩展了部分和企业相关的能力以满足更多的场景需求。

怎么开发企业微信小程序

按照所说的,它仅仅是微信小程序上拓展的,那么开发工具依然是微信开发者工具,只是在调试运行的时候,和微信小程序稍有不同~

微信开发者工具下载地址: developers.weixin.qq.com/miniprogram…

手机需要下载企业微信App,在调试时,通过app上扫描微信开发者工具上的预览生成的二维码即可在手机上调试。

微信开发者工具上需要做的调整如下

第一步:添加企业微信小程序插件

1619592829(1).jpg

1619592700(1).jpg

第二步:开发调试时的切换

1619593100(1).png

第三步:可以选择所属的企业或者用测试账号

企业微信小程序有一个很大的特点,就是用户有可能是有所属的企业,一个或者多个企业,为什么这么说呢,因为我们开发的小程序需要用户登录,需要拿取的用户信息,那么我们可能就需要根据用户所属的企业展示不一样的功能。

在微信小程序中,openid是辨别用户的唯一标识,而在企业微信小程序中,userid是辨别用户的唯一标识。

扯远了~,回来,我只想说这个步骤,你可以选择所属企业进行开发。

1619594356(1).jpg

1619594517(1).jpg

然后可以开发啦~

企业微信小程序的登录流程

先说下两者的区别,其实差别也不大,只是要了解下,方便我们搭建登录流程的代码而已~

1619595603(1)_副本.jpg

左图是企业微信小程序的登录流程,右图是微信小程序的登录流程,其中两者流程差异不大,红色箭头就是具体的差异,只是我们前端要给的参数不同。

其实不用考虑太复杂,前端仅仅需要知道,企业微信小程序通过wx.qy.login获取code传给后端,后端根据当前code获取用户当前归属的企业corpid去微信后台获取了当前用户唯一标识userid做好后端的数据记录,再给我们前端返回token,我们在storage保存即可!

同理,微信小程序通过wx.login获取code传给后端,后端根据当前code获取用户appid去微信后台获取了当前用户唯一标识openid做好后端的数据记录,再给我们前端返回token,我们在storage保存即可!

具体代码思路:

进入小程序,先判断用户是否授权(wx.getSetting),如果没有授权,跳转授权页面,确认授权后用户登录wx.qy.login,先调用获取后端接口获取sessionkey和userid后,再调用后端登录接口获取token。

如已经授权,则直接获取用户信息(wx.getUserProfile,这里特别注意,2021年4月29日前是用wx.getUserInfo,这个api是有弹窗的,而在4月29日后则改变为无弹窗,官方建议用wx.getUserProfile获取用户信息),然后调用wx.qy.login获取code,调用获取后端接口获取sessionkey和userid后,再调用后端登录接口获取token。

在app.js中的代码:

下面这段代码在进入小程序就会立马执行

onLaunch: function (options) {
    // 判断用户是否授权,授权之后再登录
    wx.getSetting({
      success: res0 => {
        if (res0.authSetting['scope.userInfo']) {
          // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
          wx.getUserProfile({
            success: res1 => {
              console.log('获取用户信息')
              wx.qy.login({
                success: res2 => {
                  // 这里配合后端发起请求接口获取sessionkey和userid后,再请求token
                  // 模拟代码
                  // getSessionkeyAndUserid().then(res=>{
                  //   if(res.code==200){
                  //     getToken({}).then(res=>{
                  //       wx.setStorageSync('token', res.data.token)
                  //     })
                  //   }
                  // })
                }
              })
            }
          })
        } else {
          wx.reLaunch({
            url: '/pages/login/index',
          })
        }

      }
    })
  }

接上面代码,跳转到login页面后,在login页面的代码如下:

login.wxml

<view>
  <button type="primary"  bindtap="getUserProfile">授权登录</button>
</view>

login.js

 getUserProfile() {
    wx.getUserProfile({
      desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
      success: (res) => {
        wx.qy.login({
          success: res1 => {
            // 这里配合后端发起请求接口获取sessionkey和userid后,再请求token
            // 模拟代码
            // getSessionkeyAndUserid().then(res=>{
            //   if(res.code==200){
            //     getToken({}).then(res=>{
            //       wx.setStorageSync('token', res.data.token)
            //     })
            //   }
            // })
          }
        })
      }
    })
  }

具体的登录流程大概是这样子,如果你有更好的登录流程的建议,也可以分享出来,有错也欢迎指正,希望大家一起进步! 后续做到小程序遇到的各种问题,我会继续修改和更新在文章上滴~