帝国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);

}

相关推荐
icebreaker16 小时前
Weapp-vite:原生模式之外,多一种 Vue SFC 选择
前端·vue.js·微信小程序
icebreaker16 小时前
重走 Vue 长征路 Weapp-vite:编译链路与 Wevu 运行时原理拆解
前端·vue.js·微信小程序
大米饭消灭者3 天前
Taro是怎么实现一码多端的【底层原理】
微信小程序·taro
FliPPeDround5 天前
Vitest Environment UniApp:让 uni-app E2E 测试变得前所未有的简单
微信小程序·e2e·前端工程化
FliPPeDround5 天前
微信小程序自动化的 AI 新时代:wechat-devtools-mcp 智能方案
微信小程序·ai编程·mcp
码云数智-大飞5 天前
如何创建自己的小程序,码云数智与有赞平台对比
微信小程序
luffy54595 天前
微信小程序页面使用类似filter函数的wxs语法
微信小程序·小程序
Slow菜鸟5 天前
微信小程序开发(二)目录结构完全指南
微信小程序·小程序
攀登的牵牛花5 天前
给女朋友写了个轻断食小程序:去老丈人家也是先动筷了
前端·微信小程序
前端小雪的博客.5 天前
【保姆级教程】uniAI 插件高效开发 uni-app 微信小程序(附实战案例)
微信小程序·uni-app·ai编程·uniai