結(jié)合laravel6,對接微信小程序

整體實現(xiàn)思路:

一、微信小程序登錄退出,訪問后端接口

1.后端的登錄接口不需要token驗證

2.后端的退出接口,用戶信息的接口,需要token驗證

3.該token是專門給小程序用的,不能和管理后臺的token共用,因此需要創(chuàng)建一個 token表,存儲微信小程序 用戶的id、token、token過期時間、記錄的創(chuàng)建時間、記錄的修改時間、記錄的刪除時間 等信息

4.用戶每次訪問小程序,就要把用戶對應(yīng)的舊token刪除,增加一個新的token,并返回用戶信息+token給負(fù)責(zé)小程序的前端

5.根據(jù)token,去請求小程序其它的需要token驗證的后端接口

6.需要token驗證的后端接口,都需要放在中間件下面,由中間件來校驗token的有效性


二、生成微信小程序二維碼的接口,掃微信小程序二維碼,跳到前端指定的頁面,獲取scene參數(shù)的值,訪問后端接口

1.后端在管理后臺,提供接口,為每一個項目生成一個小程序二維碼

2.將生成的小程序二維碼(請求微信小程序官方提供的接口,返回base64圖片編碼,可以將內(nèi)容放到 img 的 src 中進(jìn)行展示),將內(nèi)容保存為圖片文件

3.將該圖片文件上傳到oss,將oss返回的圖片路徑,保存到數(shù)據(jù)表中,某個項目有二維碼,直接讀取,沒有再請求接口生成,避免每次都要請求接口生成

4.掃描微信小程序二維碼,請求到前端提供的頁面中,前端根據(jù)scene的值(后端提供的某個項目的id值),請求相應(yīng)的接口,獲取相應(yīng)的數(shù)據(jù),相應(yīng)的接口不要加token驗證

5.注意:微信小程序,需要發(fā)布后,才能掃


三、mysql的token表

CREATE TABLE `subject_token` (

? `id` int(11) unsigned NOT NULL AUTO_INCREMENT,

? `subject_id` int(11) NOT NULL DEFAULT '0' COMMENT '用戶id(用戶表的id)',

? `token` varchar(255) NOT NULL DEFAULT '' COMMENT 'token值',

? `express_at` datetime DEFAULT NULL COMMENT '有效期',

? `state` varchar(4) NOT NULL DEFAULT '1001' COMMENT '狀態(tài):1001 正常; 1002 過期;',

? `created_at` datetime DEFAULT NULL COMMENT '創(chuàng)建時間',

? `updated_at` datetime DEFAULT NULL COMMENT '更新時間',

? `deleted_at` datetime DEFAULT NULL COMMENT '刪除時間',

? PRIMARY KEY (`id`) USING BTREE,

? KEY `subject_id` (`subject_id`) USING BTREE

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='微信小程序用戶token表';


主要的實現(xiàn)邏輯

一、微信小程序登錄退出,訪問后端接口

1.微信小程序請求的后端登錄接口(不需要token驗證)

(1)控制器controller

(2)服務(wù)service

(2.1)登錄授權(quán)

(2.2)獲取生成的token

2.微信小程序請求的后端退出接口(需要token驗證)

(1)中間件

(2)控制器controller

(3)服務(wù)service

(3.1)退出

(3.2)中間件校驗token


二、生成微信小程序二維碼的接口,掃微信小程序二維碼,請求后端接口

注意:

1.微信小程序,需要發(fā)布后,才能掃

2.重要的參數(shù):path,scene

3. $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $appID . '&secret=' . $secret;

(1)需要用get請求

(2)將 appid,secret 參數(shù)放在postman的Params中

grant_type:client_credential

appid:登錄小程序官網(wǎng),到自己相應(yīng)的小程序中獲取

secret:登錄小程序官網(wǎng),到自己相應(yīng)的小程序中獲取,該值需要管理員才能獲取

4. $codeurl = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' . $result['access_token'];

(1)需要用post請求,getwxacodeunlimit 該接口生成的小程序碼,永久有效,數(shù)量暫無限制

(2)將 access_token 參數(shù)放在postman的Params中

(3)在body中,選擇raw (提交的內(nèi)容要json格式,不能form格式提交),獲取scene的之后請求的接口,根據(jù)自己的業(yè)務(wù)需要,看是否需要加token驗證,若需要,就把相應(yīng)的接口路由,放在中間件下進(jìn)行校驗

{

? ? "path": "pages/shanghai/shanghai",

? ? "width": 430,

? ? "scene": "111",

? ? //"check_path": false,

? ? //"env_version": "release"

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容