小程序-登錄-token


 

 

 

1.前端調用wx.login()獲取code值

2.前端通過調用wx.getUserInfo獲取iv、rawData、signature、encryptedData等加密數據,傳遞給后端

3.服務器通過code請求api--auth.code2Session,換回session_key和openid

 

示例代碼


(判斷用戶的openid是否在數據庫中不在就加入成為會員,再給前端發送token(隨機字符,也可以用時間戳+openid) )

4前端得到token,保存到緩存sto,

5前端發送消息到服務器時帶上token,

6服務器驗證token(如果token用時間戳,跟新時間戳,)

 

注:

1.Token是在客戶端頻繁向服務端請求數據,服務端頻繁的去數據庫查詢用戶名和密碼並進行對比,判斷用戶名和密碼正確與否,並作出相應提示,

2.Token的目的是為了減輕服務器的壓力,減少頻繁的查詢數據庫,使服務器更加健壯。

 

3. 前端調用 wx.checkSession 接口檢測當前用戶登錄態是否有效。(用戶有可能退出小程序)

 

登錄態過期后開發者可以再調用 wx.login 獲取新的用戶登錄態。調用成功說明當前 session_key 未過期,調用失敗說明 session_key 已過期

 

 

//開發者應在后端服務器使用getAccessToken獲取 access_token(2小時有效)

//兩種授權機制

第一種:每次拿授權信息前,都去login拿最新的code找后端獲取數據 --token(后端自己維護)。

第二種:授權時先調用checkSession判斷session_key是否失效( ),失效重新調用wx.login。沒失效只給后端iv和data去獲取數據,后端照樣返回你數據~

    session_key 是有時效性的,它的時效性就是通過 checkSession 來檢查的。因此如果 checkSession 說登錄失效了,那么通常你就需要重新進行微信授權,更新 session_key

 

 

4.服務器通過前端給的rawData 加獲取的session_key使用sha1加密,計算出signature1

5.比對前端傳的signature和自己算出來的signature1是否一致(防止數據不一致)

6.用AES算法解密encryptedData里的敏感數據

7.拿着敏感數據后做自己的邏輯

8.通知前端登陸成功

 

一、通過基礎接口token獲取用戶信息
1、獲取token
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
2、獲取個人信息(如果不關注公眾號,返回“未關注”狀態,拉取不到更多信息)
https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

二、通過社交接口token獲取用戶信息(不需要關注公眾號)
1、獲取CODE
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
參數scope 默認有2個值snsapi_base(只獲取openid)和snsapi_userinfo(可獲取更多用戶信息、頭像、昵稱等,需要用戶在網頁授權)
2、獲取token
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
3、獲取用戶信息
https://api.weixin.qq.com/sns/userinfo?access_token=TOKEN&openid=OPENID&lang=zh_CN



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM