這篇文章將為大家詳細講解有關(guān)微信小程序如何實現(xiàn)登錄功能,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
成都創(chuàng)新互聯(lián)公司網(wǎng)站建設公司提供網(wǎng)站設計和自適應建站服務。團隊由有經(jīng)驗的網(wǎng)頁設計師、程序員和市場專家組成,能夠提供從H5頁面制作,網(wǎng)站制作,廣告投放,模板建站到小程序制作等全方位服務。 以客戶為中心,致力于為客戶提供創(chuàng)新、高效的解決方案,幫助您打造成功的企業(yè)網(wǎng)站。注冊/登錄
小程序端" style="margin: 0.8em 0px; padding: 0px; box-sizing: border-box; font-weight: 100; line-height: 1.3em; font-size: 2.13em;">小程序端:
通過上面wx.login和wx.getUserInfo兩個api拿到相應的信息,并通過上方接口傳給自己的服務器.
需要傳輸?shù)男畔⒂?個參數(shù):
appid 小程序標識 secret 小程序的 app secret js_code //wx.login登錄時獲取的 code,用于后續(xù)獲取session_key //下面兩個參數(shù)用戶服務器端簽名校驗用戶信息的 signature 使用 sha1( rawData + sessionkey ) 得到字符串,用于校驗用戶信息。 rawData 不包括敏感信息的原始數(shù)據(jù)字符串,用于計算簽名。 //下面兩個參數(shù)是用于解密獲取openId和UnionId的 encryptedData 包括敏感數(shù)據(jù)在內(nèi)的完整用戶信息的加密數(shù)據(jù) iv 加密算法的初始向量 當然,可以精簡為以下三個參數(shù). 其余的簽名校驗的參數(shù)可省略,而appid和secret可以直接寫在服務器. js_code // wx.login登錄時獲取的 code,用于后續(xù)獲取session_key encryptedData 包括敏感數(shù)據(jù)在內(nèi)的完整用戶信息的加密數(shù)據(jù) iv 加密算法的初始向量
服務端處理邏輯
相關(guān)的信息傳輸給服務器后,服務器
1.先根據(jù)js_code去微信服務器拿到session_key
2.(此步可省略)使用 sha1( rawData + sessionkey )拿到字符串,判斷與signature值是否相同,如果相同則用戶信息無誤,可進行下一步.如果不同,則說明用戶信息被篡改或過期.
3.然后根據(jù)解密算法自行解密(輸入?yún)?shù)為appId,sessionKey,encryptedData,iv,返回一個jsonObj),拿到openId和unionId等信息,執(zhí)行服務器端的注冊/登錄操作.
4.注冊/登錄操作邏輯完成后,將我們服務器的sessionId(或其他token),以及用戶信息返回給客戶端.
其中,服務器去獲取session_key的請求為:
(小寫為固定寫好的,大寫為待替換的)
/tupian/20230522/jscode2session> //正常返回的JSON數(shù)據(jù)包
{
"openid": "OPENID",
"session_key": "SESSIONKEY"
"expires_in": 2592000
}
//錯誤時返回JSON數(shù)據(jù)包(示例為Code無效)
{
"errcode": 40029,
"errmsg": "invalid code"
}
相關(guān)解密算法:
https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html
注意:示例代碼中有node,c++,php,python的,沒有java的.
需要服務器返回的信息:
sessionId/token 登錄狀態(tài)標識
userInfo: jsonObject,用戶在我們平臺上的信息,其內(nèi)容與getPersonalInfo接口返回的相同.
最后,將登錄操作封裝成方法,需要處調(diào)用即可
//最終供外面調(diào)用的方法 function login(){ console.log('logining..........'); //調(diào)用登錄接口 wx.login({ success: function (e) { console.log('wxlogin successd........'); var code = e.code; wx.getUserInfo({ success: function (res) { console.log('wxgetUserInfo successd........'); var encryptedData = encodeURIComponent(res.encryptedData); thirdLogin(code,encryptedData,res.iv);//調(diào)用服務器api } }) } }); } function thirdLogin(code,encryptedData,iv){ var url = "eeee/xxx/login/ttttt"; var params = new Object(); params.code = code; params.encryptedData = encryptedData; params.iv =iv; buildRequest(new Object(),url,params,{ onPre: function(page){}, onSuccess:function (data){ console.log('my login successd........'); console.log(data); getApp().globalData.session_id = data.session_id; getApp().globalData.uid = data.uid; getApp().globalData.isLogin = true; }, onError : function(msgCanShow,code,hiddenMsg){ } }).send(); }
關(guān)于“微信小程序如何實現(xiàn)登錄功能”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
名稱欄目:微信小程序如何實現(xiàn)登錄功能-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://www.rwnh.cn/article30/epgpo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站設計公司、自適應網(wǎng)站、品牌網(wǎng)站建設、響應式網(wǎng)站、品牌網(wǎng)站設計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容