帝国cms微信小程序 微信授权登录api接口

<?php

header('Access-Control-Allow-Origin: *');

defined('ECMSAPI_MOD') or exit; // 防止直接仿问该接口文件

date_default_timezone_set("PRC"); //系统使用北京时间

qianming=public_r'add_login';

require_once(ECMS_PATH."ecmsapi/_mod/wechat/vendor/autoload.php");

use \Firebase\JWT\JWT;

define('KEY', $qianming);

// 过滤非post方式请求

if(!$api->isPost()){

// 使用fun类是的json方法快速 输出json结构数据

$api->load('fun')->json(0 , '非法提交');

}

// 获取用户名并用RepPostVar函数过滤

unionid = api->post('unionid' , '' , '');

qqopenid = api->post('qqopenid' , '' , '');

// 获取是否开启验证码 并用intval函数过滤

checkcode = api->post('checkcode' , 0 , 'intval');

// 如果开启了验证码 先验证验证码是否正确

if($checkcode){

// 获取验证码并用RepPostVar函数过滤

code = api->post('code' , '' , 'RepPostVar');

// 验证码为空直接返回错误提示

if($code === ''){

$api->load('fun')->json(0 , '验证码不能为空');

}

// 用user类中的code方法 验证验证码是否正确 第一个参数填写login 表示当前验证的是登陆验证码

isok = api->load('user')->code('login' , code); // isok 将返回数字 -1 0 1 分别代表 -1超时 0失败 1成功

// 若没有通过验证将返回错误提示

if($isok !== 1){

api-\>load('fun')-\>json(0 , isok < 0 ? '验证码超时' : '验证码不正确');

}

$api->load('user')->code('login'); // 清理掉验证码

}

// print_r($unionid);

// print_r($qqopenid);

// 验证用户名与密码是否为空

if (unionid === '' \&\& qqopenid === '') {

$api->load('fun')->json(0 , '参数错误');

}

// 定义查询条件 $map

unionid="'unionid'";

// 定义查询条件 $map

$map = '1=1';

if($unionid){

map = 'unionid='.unionid;

}

isok = api->load('db')->one('!db.pre!enewsmember' , '*' , $map);

username = isok'username';

// 若没有通过验证 返回错误信息

if(!$isok){

// api-\>load('fun')-\>json(0 , api->load('user')->getError());

}

// 通过所有验证后 将提交的用户设置为登陆状态

isok = api->load('user')->setSession($username);

if(false === $isok){

// 设置失败后返回错误信息

api-\>load('fun')-\>json(0 , api->load('user')->getError());

}else{

// 设置成功后 获取用户数据

user = api->load('user')->one($username);

$nowtime = time();

$token = [

'iss' => 'https://www.aabc.com/', //签发者

'aud' => 'https://www.abc.com/', //jwt所面向的用户

'iat' => $nowtime, //签发时间

'nbf' => $nowtime + 10, //在什么时间之后该jwt才可用

'exp' => $nowtime + 2592000, //过期时间-10min

'data' => [

'userid' => $user'userid',

'username' => $user'username',

]

];

jwt = JWT::encode(token, KEY);

$res'result' = 'success';

res\['jwt'\] = 'bearer'.jwt;

//token放入user

$user = [

'token' => $res'jwt',

'username' => $user'username',

'userid' => $user'userid',

'groupid' => $user'groupid',

'email' => $user'email',

'wxopenid' => $user'unionid',

];

api-\>load('fun')-\>json(1 , user);

}

相关推荐
PHP实战开发录8 小时前
微信小程序多环境配置混用排查记录
微信小程序·php·开发·接口隔离原则
zhangminghuan1 天前
微信小程序开发核心知识点全景解析(前端必备硬核基础)
前端·微信小程序·小程序
sltin1 天前
需求到落地:我如何在微信小程序里实现证件照换底、隐私打码与水印相机
数码相机·微信小程序·小程序
咸虾米_2 天前
小程序流量主哪种广告最赚钱?各类广告收益与实操建议
微信小程序·小程序·小程序开发·流量主广告
show4334 天前
2026微信小程序视频转文字多语种识别引擎技术选型:22种方言25种外语挑战
微信小程序·小程序·音视频
MrFlySand_飞沙4 天前
uniapp开发微信小程序实现接入企业微信客服
微信小程序·小程序·uni-app·企业微信
码艺-Alimjan4 天前
JWT 的本质、误区与正确落地:一套不依赖任何框架的架构方法论-微信小程序代码案例-Api 安全性拉满
微信小程序·架构·notepad++
禁止摆烂_才浅4 天前
微信小程序高频面试题
前端·面试·微信小程序
show4334 天前
2026微信小程序批量处理视频文件架构方案:免费批量实测
微信小程序·小程序·架构