這篇文章主要介紹了微信用戶訪問小程序登錄的過程是什么的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇微信用戶訪問小程序登錄的過程是什么文章都會(huì)有所收獲,下面我們一起來看看吧。

概述
當(dāng)你開發(fā)完了一個(gè)小程序并部署上線后,某個(gè)微信用戶第一次訪問這個(gè)小程序的時(shí)候,會(huì)彈出一個(gè)授權(quán)界面,用戶可以選擇是否使用微信登錄,如果選擇是,則直接進(jìn)入到小程序。當(dāng)你第二次進(jìn)入該小程序的時(shí)候,你會(huì)發(fā)現(xiàn)授權(quán)界面不會(huì)彈出來了,直接就進(jìn)入小程序了。
微信提供小程序登錄流程圖

我們可以從登錄流程時(shí)序 找到這張圖。想完全看懂張圖,需要了解很多東西。我們先來看看微信提供的幾個(gè)接口。
小程序接口介紹
wx.login()
這個(gè)方法是小程序端發(fā)起的,如果是使用騰訊團(tuán)隊(duì)推出的小程序組件化開發(fā)框架的wepy的話,偽代碼如下:
wepy.login()
.then(res => {
const code = res.code
})這樣子就可以從微信平臺(tái)獲取一個(gè)code,這個(gè)code是臨時(shí)登錄憑證,用于獲取openid的。
wx.request()
這個(gè)也是小程序端發(fā)起的,用于請(qǐng)求開發(fā)者服務(wù)器(也即是我們的應(yīng)用服務(wù)器)上的接口,調(diào)用的偽代碼如下:
wepy.request({
url: `xxurl`,
data: {
//入?yún)? },
})
.then(res => {
//從res中獲取應(yīng)用服務(wù)器返回的數(shù)據(jù)
})獲取openid的接口
當(dāng)某個(gè)開發(fā)主體開發(fā)了一個(gè)小程序后,當(dāng)用戶訪問這個(gè)小程序的時(shí)候,微信平臺(tái)會(huì)為這個(gè)用戶分配一個(gè)openid。如下接口:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
這個(gè)微信接口一般是我們的應(yīng)用服務(wù)器發(fā)起調(diào)用的,而不是小程序端發(fā)起的。
wx.getUserInfo
getUserInfo這個(gè)接口用于在微信平臺(tái)獲取用戶信息。注意,如果微信用戶第一次訪問小程序,是彈出一個(gè)授權(quán)界面的。當(dāng)用戶授權(quán)后,getUserInfo才能調(diào)用并返回用戶數(shù)據(jù)。
這個(gè)四個(gè)接口在使用微信訪問小程序的時(shí)候都會(huì)用到的。
基于token保持會(huì)話和登錄認(rèn)證
小程序雖然不支持cookie的機(jī)制,但是支持在header里設(shè)置token。
這個(gè)token是應(yīng)用服務(wù)器生成的。
header: {
'xxxxtoken': token,
}當(dāng)小程序調(diào)用應(yīng)用服務(wù)器接口的時(shí)候,必須帶上這個(gè)token,應(yīng)用服務(wù)端則對(duì)這個(gè)token進(jìn)行解析和認(rèn)證。當(dāng)然如果是第一次訪問小程序,只能由應(yīng)用服務(wù)器先生成token。 筆者打算用偽代碼來表達(dá)使用token后,整個(gè)登錄的過程,因?yàn)橛梦淖只蛘邎D比較難表達(dá)。
const code = wx.login();
if (code ) {//code存在
//從小程序的本地中獲取toten
const token = wx.getStorageSync('xxxxxtoken')
if (token ) {//小程序本地存有token,無需彈出授權(quán)界面
//直接傳入code字段,調(diào)用應(yīng)用服務(wù)器的驗(yàn)證token的方法,如果校驗(yàn)成功,需要返回用戶信息。
const userinfo = wx.request(http://xxxxxValidateToken(code ));
if (userinfo) {
//說明登錄成功,直接進(jìn)入小程序的主界面。
}
}
else {
//說明小程序本地沒有token,這個(gè)時(shí)候需要彈出授權(quán)界面,讓微信用戶決定是否訪問小程序,如果用戶選擇是的話。
const weixinuserinfo = wx.getUserInfo();//會(huì)彈出授權(quán)界面,微信提供的
if (weixinuserinfo ){
//生成或者驗(yàn)證token
const userinfo = wx.request(http://xxxxxValidateToken(code ));
const token = userinfo.getToken();
//將token存儲(chǔ)到小程序本地
wx.setStorageSync('xxxxxtoken', token )
}
}
}上面的偽代碼中,會(huì)調(diào)用應(yīng)用服務(wù)器(我們的應(yīng)用服務(wù)器)的
http://xxxxxValidateToken(code )
方法。這個(gè)方法的實(shí)現(xiàn)邏輯大概如下:
1、先驗(yàn)證這個(gè)微信用戶是否存在,可以調(diào)用微信提供的jscode2session方法,該方法會(huì)返回一個(gè)openid。我們必須在業(yè)務(wù)代碼里,將這個(gè)openid保存到數(shù)據(jù)庫,并和userid關(guān)聯(lián)起來。
2、判斷是否是新的用戶,如果是,則生成token和生成新的一個(gè)用戶信息存儲(chǔ)到數(shù)據(jù)庫。如果不是新的用戶,則驗(yàn)證token。
這個(gè)流程走完后,小程序就可以通過wx.request方法,帶上token,真正的訪問應(yīng)用服務(wù)器的業(yè)務(wù)方法,獲取業(yè)務(wù)數(shù)據(jù)。
token的生成和校驗(yàn)
見過有些公司是直接將userid和openid,加密后返回給小程序。也見過用userid和password加密后返回給小程序。如果是選擇第二種方式的話,驗(yàn)證token的邏輯大概如下:
先解密,獲取userid和password,并根據(jù)userid從數(shù)據(jù)庫中獲取到用戶密碼,跟從token中解密出來的password進(jìn)行比對(duì),如果相等,則校驗(yàn)通過。
關(guān)于“微信用戶訪問小程序登錄的過程是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“微信用戶訪問小程序登錄的過程是什么”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁題目:微信用戶訪問小程序登錄的過程是什么-創(chuàng)新互聯(lián)
鏈接URL:http://www.chinadenli.net/article34/dhdese.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、網(wǎng)站內(nèi)鏈、網(wǎng)頁設(shè)計(jì)公司、電子商務(wù)、小程序開發(fā)、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容