微信小程序一键登录申请需要多久(微信小程序登录开发需要注意的事项)(1)

最近公司要做一个企业微信的小程序,方便企业内的成员来登录,以便一些公司内的业务,只限于公司内的成员来操作,因为有微信小程序的开发经验,所以先当作微信小程序来开发了!

微信小程序一键登录申请需要多久(微信小程序登录开发需要注意的事项)(2)

首先来讲一下这个企业微信小程序与微信小程序登录的不同,下面是微信小程序登录的流程:

微信小程序一键登录申请需要多久(微信小程序登录开发需要注意的事项)(3)

小程序内需要调用wx.login(),获取临时登录凭证code,并回传到开发者服务器,然后在开发者服务器上,也就是对接小程序的后段服务,需要拿到传过来的code,调用https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code,传入相关的值来获取用户唯一标识OpenID和会话密钥session_key。这个OpenID就可以关联你的自定义登录态,来进行小程序和后端数据的交换,session_key是对用户数据进行加密签名的密钥。

而企业微信小程序的登录流程如下:

微信小程序一键登录申请需要多久(微信小程序登录开发需要注意的事项)(4)

在企业微信小程序登录开发中,小程序需要调用wx.qy.login()来获取临时登录凭证code,将这个临时登录凭证code传到我们开发的后端服务上,后端需要先调用https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=&corpsecret=来获取access_token,拿到这个access_token之后才和那个临时登录凭证code配合,调用接口https://qyapi.weixin.qq.com/cgi-bin/miniprogram/jscode2session?access_token=ACCESS_TOKEN&js_code=CODE&grant_type=authorization_code来获取userid和secretkey,注意,这里是userid,而不是微信小程序的openid,其次是调用的接口也不同,后面的自定义登录态与userid关联之后的业务操作,就相差无几了!

以上是企业微信小程序和微信小程序的登录操作流程,在登录的过程中,会出现下面的问题。

第一个问题就是获取token的频率问题,频繁的调用肯定是不行的,微信是会在一定时间内做限制的,这时就需要在后端程序的当中做限制,比方说在请求登录之前先判断token是否还在有效期,在有效期之内就可以直接返回,而不是去请求获取,这个问题就有大神做出了demo供大家参考:

首先发起请求:

微信小程序一键登录申请需要多久(微信小程序登录开发需要注意的事项)(5)

微信小程序一键登录申请需要多久(微信小程序登录开发需要注意的事项)(6)

第二个问题就是自定义的登录态,如果想用session做登录态,来保持小程序和后端的业务交互,就要注意一个问题了,就是小程序发起的请求,session的状态是无法保持的,它不像浏览器直接访问你的后端,可以判断后续的请求是不是来自同一个客户,因为小程序发起的请求,是先要经过微信的服务器,然后转发到我们开发的后端服务器,这样使用session,后端就无法判断请求是否来自同一个用户,简单的解决方法就是把请求登录的返回的set-cookie小程序保存起来,在后续的请求再塞到cookie中发往后端:

微信小程序一键登录申请需要多久(微信小程序登录开发需要注意的事项)(7)

还有一种就是不使用session,可以结合Redis来完成登录态的校验,正好Redis也提供了对某一键值设置过期时间的方法,用起来得心应手!

微信小程序一键登录申请需要多久(微信小程序登录开发需要注意的事项)(8)

,