自我介紹 我是IT果果日記,微信公眾號請搜索 IT果果日記
一個普通的技術宅,定期分享技術文章,歡迎點贊、關注和轉發,請多關照。
首先,我們要了解什么是微信小程序登錄?它的作用是什么?
用戶登錄
微信小程序登錄是為了讓開發者的服務器獲取用戶的以及的令牌。
請不要將微信小程序的用戶登錄理解為傳統意義上的登錄。雖然從大的方向上講,登錄都是為了確認用戶的身份、拿到用戶的唯一身份標識,但是微信小程序的登錄流程和傳統的賬號密碼流程不太一樣。當你進入小程序后,不需要輸入任何賬號密碼,開發者服務器就可以獲取你的標識。微信小程序的登錄流程遠比傳統的賬號密碼登錄要復雜。
微信小程序提供了wx.login()方法用于用戶登錄。wx.login方法的主要目的是拿到用戶的和用戶本次登錄的。
是用戶對于當前小程序的身份標識,類似于我們自己產品里的用戶id號,只不過在微信里有自己的用戶賬戶體系,你可以使用這個作為用戶的身份標識。當然,也可以建立一套自己的用戶標識小程序是什么,不過當你需要調用微信開放接口(比如支付、發送模板消息)時,還是必須知道用戶的。
是本次用戶登錄的會話密鑰,通常用來對用戶的通信數據進行加解密。
到目前為止,如果對于和的概念還很模糊,不知道這兩者的用處,沒有關系,在后面的篇幅里我們將陸續講解和使用這兩個參數。
首先要在開發者服務器拿到和。圖1所示為獲取和的流程圖。這張圖非常重要。
圖1 登錄并獲取和的流程圖
要獲取和,首先需要在小程序中調用wx.login小程序是什么,并獲取code;隨后將code發送到開發者服務器,并同appid和一起發送到微信服務器,微信服務器會返回我們需要的和。
我們結合具體代碼看看,實現上述流程并最終拿到和。
wx.login({
success: res => {
// 發送 res.code 到后臺換取 openId, sessionKey, unionId
console.log('code:' + res.code);
wx.request({
url:"http://localhost:8080/wxopen/getOpenIdAndSessionKey",
data:{
code: res.code
},
success: function (res) {
console.log(res.data);
}
})
}
})
這里調用了wx.login方法,這個方法沒有參數,只有回調函數?;卣{函數是當微信服務器成功返回結果時調用的函數。
先來看回調函數返回參數的參數說明。
重點是返回值code。code是一把鑰匙,是得到和的關鍵。code有效期只有5分鐘,如果在5分鐘之內還沒有用code換取和,那么就不能再使用了。
可不可以直接在小程序內部用code去微信服務器換取和呢?理論上是可以的,但這完全沒有意義。無論出于安全性還是實用性,都應該將code發送到開發者服務器由開發者服務器獲取和。
所以,我們在wx.login的回調函數中再次發起了一個wx.請求,將code發送到了本地服務器中。在編寫后端接口代碼前,首先來學習如何使用code調用微信服務器獲取和。