有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
说明:
当前 TSF 同时支持 QQ 小程序开发,小程序插件名为 QQMPLogin。关于小程序开发的详细说明请参见 QQ 小程序文档

操作场景

该文档指导您通过 TSF 控制台,创建和绑定微信小程序登录插件。
微信小程序开发者在开发小程序的过程中,需要考虑用户登录认证相关的业务逻辑,基于此插件,开发者可以方便地实现业务的登录认证服务。
典型的微信小程序登录插件使用场景是:
实现微信小程序用户登录:遵守微信小程序官方登录规范,在微服务网关侧完成登录业务,生成用户登录态凭证,并返回给小程序前端处理,同时,将微信登录成功返回的原生登录态数据传递至业务后台处理。
实现用户登录态凭证校验:微服务网关对用户登录态凭证进行校验,若校验通过,则网关将请求放行,并携带微信原生登录态数据传递至业务后台,否则,返回失败原因至小程序前台,小程序客户端可以根据异常状态码,进行对应的操作(如因登录态过期失效进行重新登录操作)。

操作步骤

创建微信小程序登录插件

1. 登录 TSF 控制台,在左侧导航栏单击组件中心下的微服务网关 > 插件管理
2. 在插件管理页面,单击新建插件,填写基本信息。
插件类型:选择 WeChatMpLogin。
插件名称:必填。
插件描述:选填。
3. 填写参数设置。
APPID:小程序唯一凭证密钥,获取方式同 APPID。
APPSECRET:小程序唯一凭证密钥,获取方式同 APPID。
4. 获取登录凭证 Code。 请求 Code 携带位置:微信后台通过 Code 换取用户的登录态信息,包括用户的唯一标识(openid)及本次登录的会话密钥(session_key)。
5. 向小程序返回登录态。
自定义登录态参数名:插件对微信登录态以及其他登录信息进行加密的参数名。 返回自定义登录态参数位置:插件对登录态进行加密后的参数携带位置。
登录态过期时间:登录态过期时间,以分为单位。
6. 选择登录态校验。
前台业务请求自定义登录态参数位置:小程序请求业务服务时,登录态携带位置。
向业务后台传输登录态参数位置:网关对登录态进行解密后,将提取的微信登录信息传递至用户后台服务的携带位置。
7. 单击完成,完成创建。

将请求参数转 Tag

TSF 提供了一系列将请求参数转 Tag 能力,方便进行细粒度的服务治理能力。
有关请求参数转 Tag 能力的描述可参见 微服务网关 Tag 插件

默认 Tag 操作说明

平台提供了一系列微信默认参数的灰度发布能力,包含用户名、性别等信息。用户可以勾选这些参数并提供参数的填写位置,方便平台将这些请求参数转为 TSF 中的标签。
当某个参数的传入具有请求的唯一性(该参数值不重复),则可以将该参数设置为 TraceID,平台将对该参数与平台生成的 TraceID 进行关联,方便用户进行唯一性定位与检索。
仅支持一个参数设置为 TraceID/

自定义 Tag 操作说明

自定义 Tag 使用请参见 微服务网关 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_session
let 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
}
}
)
//具体接口使用文档参照微信小程序官方使用接口文档
}