说明:
操作场景
该文档指导您通过 TSF 控制台,创建和绑定微信小程序登录插件。
微信小程序开发者在开发小程序的过程中,需要考虑用户登录认证相关的业务逻辑,基于此插件,开发者可以方便地实现业务的登录认证服务。
典型的微信小程序登录插件使用场景是:
实现微信小程序用户登录:遵守微信小程序官方登录规范,在微服务网关侧完成登录业务,生成用户登录态凭证,并返回给小程序前端处理,同时,将微信登录成功返回的原生登录态数据传递至业务后台处理。
实现用户登录态凭证校验:微服务网关对用户登录态凭证进行校验,若校验通过,则网关将请求放行,并携带微信原生登录态数据传递至业务后台,否则,返回失败原因至小程序前台,小程序客户端可以根据异常状态码,进行对应的操作(如因登录态过期失效进行重新登录操作)。
操作步骤
创建微信小程序登录插件
1. 登录 TSF 控制台,在左侧导航栏单击组件中心下的微服务网关 > 插件管理。
2. 在插件管理页面,单击新建插件,填写基本信息。
插件类型:选择 WeChatMpLogin。
插件名称:必填。
插件描述:选填。
3. 填写参数设置。
APPID:小程序唯一凭证密钥,获取方式同 APPID。
APPSECRET:小程序唯一凭证密钥,获取方式同 APPID。
4. 获取登录凭证 Code。
请求 Code 携带位置:微信后台通过 Code 换取用户的登录态信息,包括用户的唯一标识(openid)及本次登录的会话密钥(session_key)。
5. 向小程序返回登录态。
自定义登录态参数名:插件对微信登录态以及其他登录信息进行加密的参数名。
返回自定义登录态参数位置:插件对登录态进行加密后的参数携带位置。
登录态过期时间:登录态过期时间,以分为单位。
6. 选择登录态校验。
前台业务请求自定义登录态参数位置:小程序请求业务服务时,登录态携带位置。
向业务后台传输登录态参数位置:网关对登录态进行解密后,将提取的微信登录信息传递至用户后台服务的携带位置。
7. 单击完成,完成创建。
将请求参数转 Tag
TSF 提供了一系列将请求参数转 Tag 能力,方便进行细粒度的服务治理能力。
默认 Tag 操作说明
平台提供了一系列微信默认参数的灰度发布能力,包含用户名、性别等信息。用户可以勾选这些参数并提供参数的填写位置,方便平台将这些请求参数转为 TSF 中的标签。
当某个参数的传入具有请求的唯一性(该参数值不重复),则可以将该参数设置为 TraceID,平台将对该参数与平台生成的 TraceID 进行关联,方便用户进行唯一性定位与检索。
仅支持一个参数设置为
TraceID/
。自定义 Tag 操作说明
绑定插件
创建好 WeChatMpLogin 类型的插件需要绑定到分组或 API 上才会生效。
1. 登录 TSF 控制台,在左侧导航栏单击组件中心下的微服务网关 > 插件管理。
2. 选择刚刚创建好的插件,单击操作列的绑定对象。
3. 在绑定对象中,将插件绑定到某个分组或者某个分组下的 API 上。
4. 单击提交。当用户访问对应的微服务网关分组时,插件就会生效。
说明:
一个微服务网关最多支持绑定1500个插件。
案例说明
1. 获取 APPID 与 APPSECRET。
在开发者 微信小程序开发平台 中,可以查询到小程序的 AppID(小程序 ID)与 AppSecret(小程序密钥)。
2. 根据上述 操作步骤 ,完成微服务网关中微信小程序登录插件的创建与绑定。
3. 编写小程序登录业务。
// 登录wx.login({success: res => {// console.log("code is : ", res.code);wx.request({url: ${LOGIN_BUSINESS_URL}, //登录业务访问路径header: {'content-type': 'application/json','js_code': res.code, //携带js_code},success: res => {//本地缓存wx.setStorageSync('user_session', res.header.user_session);//let user_session = wx.getStorageSync('user_session') || ''//console.log('idsession is :', idsession);wx.showToast({title: '登录成功'})}})}})
4. 通过小程序访问业务服务。
BusinessRequestFunc: function () {//获取登录时存储的user_sessionlet user_session = wx.getStorageSync('user_session') || '';//console.log("user_session is :" , user_session);wx.request({url: ${BUSINESS_URL}, //业务访问路径,header: {'content-type': 'application/json','user_session': user_session},success: res => {//console.log("response : ", res.data)// your business here}})//具体接口使用文档参照微信小程序官方使用接口文档}