access突然需要登录_早知道早好,微信小程序登录开发需要注意的事项
最近公司要做一個企業微信的小程序,方便企業內的成員來登錄,以便一些公司內的業務,只限于公司內的成員來操作,因為有微信小程序的開發經驗,所以先當作微信小程序來開發了!
首先來講一下這個企業微信小程序與微信小程序登錄的不同,下面是微信小程序登錄的流程:
小程序內需要調用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是對用戶數據進行加密簽名的密鑰。
而企業微信小程序的登錄流程如下:
在企業微信小程序登錄開發中,小程序需要調用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供大家參考:
首先發起請求:
第二個問題就是自定義的登錄態,如果想用session做登錄態,來保持小程序和后端的業務交互,就要注意一個問題了,就是小程序發起的請求,session的狀態是無法保持的,它不像瀏覽器直接訪問你的后端,可以判斷后續的請求是不是來自同一個客戶,因為小程序發起的請求,是先要經過微信的服務器,然后轉發到我們開發的后端服務器,這樣使用session,后端就無法判斷請求是否來自同一個用戶,簡單的解決方法就是把請求登錄的返回的set-cookie小程序保存起來,在后續的請求再塞到cookie中發往后端:
還有一種就是不使用session,可以結合Redis來完成登錄態的校驗,正好Redis也提供了對某一鍵值設置過期時間的方法,用起來得心應手!
總結
以上是生活随笔為你收集整理的access突然需要登录_早知道早好,微信小程序登录开发需要注意的事项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: excel高级函数_PowerQuery
- 下一篇: python七大神级插件_Intelli