该项目基于腾讯云小程序会话服务器(Wafer)的二次开发。修改某些配置,破除一套服务器对应一个小程序或公众号哦的限制。添加了小程序、微信公众号、企业微信相关的AccessToken管理接口,JSAPI_TICKET管理接口等,更新mysql库到mysqli。适配了SCF架构,可直接部署到SCF上,通过API网关,提供内外网环境下的会话管理服务。
本人小白,完全不懂PHP,原项目在代码层面无法支持多个小程序或公众号,所以在此做了修改和适配。本项目可搭配官方Wafer的客户端SDK使用,但客户端SDK需要做一定的适配修改。
/system/db/db.ini
中为你的MySQL连接参数db.sql
初始化表结构等XXX.zip
流程介绍:通过程序入口index.php文件调取了system目录下parse_request.php从而解析上传的json入参对象根据json中不同的interfacename来判断调取application/controllers/qcloud/minaauth/Auth.php中对应的方法。Auth.php通过调用application/services/qcloud/minaauth/Cappinfo_Service.php对数据库进行操作。
/application/controllers/qcloud/minaauth/Auth.php
中的get_access_token
方法。修改内容:
通过上述修改,实现了带appid参数调用会话服务器,服务器根据对应的appid和secretKey调用微信服务器的接口解析用户登录信息,并生成第三方session保存到数据库cAuth中的sessioninfo表中。
测试语句:curl API网关域名/release/mina_auth/ -X POST -H 'content-type:application/json' -d '{下面的json入参}'
小程序鉴权:id_skey接口,客户端传入appid和code,后台返回生成的skey和id,创建用户成功
{
"version":1,
"componentName":"MA",
"interface":{
"interfaceName":"qcloud.cam.id_skey",
"para":{
"appid":"",
"code":""
}
}
}
小程序userinfo解密接口。客户端传入id,skey,encrypt_data,iv,会话服务器进行解密并更新用户信息和返回揭秘数据
{
"version":1,
"componentName":"MA",
"interface":{
"interfaceName":"qcloud.cam.userinfo",
"para":{
"id":"",
"skey":"",
"encrypt_data":"",
"iv":""
}
}
}
小程序auth接口。客户端鉴权,入参id,skey,appid。
{
"version":1,
"componentName":"MA",
"interface":{
"interfaceName":"qcloud.cam.auth",
"para":{
"id":"",
"skey":"",
"appid":""
}
}
}
小程序decrypt接口。数据解密接口,通过传入id,skey,encrypt_data,iv进行数据解密并返回
{
"version":1,
"componentName":"MA",
"interface":{
"interfaceName":"qcloud.cam.auth",
"para":{
"id":"",
"skey":"",
"encrypt_data":"",
"iv":""
}
}
}
小程序&公众号access_token接口。根据appid获取有效的accesstoken
{
"version":1,
"componentName":"MA",
"interface":{
"interfaceName":"qcloud.mimi.access_token",
"para":{
"appid":"",
"force":false,//强制刷新
}
}
}
腾讯云COS Reusable签名接口。根据传入的参数获取COS长效签名
{
"version":1,
"componentName":"MA",
"interface":{
"interfaceName":"qcloud.cos.auth.reusable",
"para":{
"appid":"",
"sid":"",
"skey":"",
"bucket":"",
"expiration":"",
"filepath":"" || null
}
}
}
腾讯云COS NonReusable签名接口。根据传入的参数获取COS一次性签名
{
"version":1,
"componentName":"MA",
"interface":{
"interfaceName":"qcloud.cos.auth.nonreusable",
"para":{
"appid":"",
"sid":"",
"skey":"",
"bucket":"",
"filepath":"" || null
}
}
}
企业微信access_token接口。根据agentid,corpid获取有效的accesstoken
{
"version":1,
"componentName":"MA",
"interface":{
"interfaceName":"qcloud.work.access_token",
"para":{
"corpid":"",//企业ID
"agentid":"",//应用ID
"force":false,//强制刷新
}
}
}
企业微信新增或重置应用配置接口
{
"version":1,
"componentName":"MA",
"interface":{
"interfaceName":"qcloud.work.initagent",
"para":{
"corpid":"",//企业ID
"agentid":"",//应用ID
"agentsecret":"",//应用对应的secret
"remark":"备注"//备注信息
}
}
}
企业微信jsapi_ticket接口。根据agent,corpid获取有效的jsapi_ticket
{
"version":1,
"componentName":"MA",
"interface":{
"interfaceName":"qcloud.work.ticket",
"para":{
"corpid":"",//企业ID
"agentid":"",//应用ID
"force":false,//强制刷新
}
}
}
企业微信应用的jsapi_ticket接口。根据agent,corpid获取有效的jsapi_ticket
{
"version":1,
"componentName":"MA",
"interface":{
"interfaceName":"qcloud.work.agent.ticket",
"para":{
"corpid":"",//企业ID
"agentid":"",//应用ID
"force":false,//强制刷新
}
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。