>[danger]每次访问接口时,都必须携带5个公共参数,如果需要用户信息的接口,还需要携带cowcms_userid参数(建议每个连接都携带该参数)
| 参数名称 | 参数描述 |
| --- | --- |
| appid | 接口网站分配个请求网站的appid |
| interval | timestamp参数有效时时长 默认7200,单位为秒 |
| timestamp | 请求时间戳,该值和当前时间差不能大于 interval 值(默认7200秒,时间在后台可设置) |
| nonceStr | 随机字符串 |
| signature | 请求签名 |
| cowcms_userid | 登录用户id 32位字符串,该参数在用户登录时,返回给前端的用户登录凭证,前端需要保存该凭证,在调用强制用户登录的接口时必传该参数 |
>[danger]调用API接口流程
1.获取访问API接口的必须参数。
2.将获取的参数缓存到前端。
3.访问接口时判定必须参数是否在有效时间内
4.如果参数有效直接访问,如果参数无效,重新获取然参数后,执行第二步
>站内调用接口获取访问API接口的必须参数
```
namespace app\user\controller;
use user\Member;
class Sign extends Member
{
function getCowcmsUserid()
{
//$id API站点id,如果是本站默认id为1,开发者可根据自己需求填写
$param = exeFun('getApiParam',[$id=1],'api');
dump($param) ;
}
}
$param打印出来的参数为
array(5) {
["appid"] => string(40) "50fb0e2cde242fb428e5d35c719e82f3bfca8dcf"
["timestamp"] => int(1584416641)
["nonceStr"] => string(6) "gtug8k"
["signature"] => string(40) "fcee23aa9c3f9055d8d63e4cba51d71a630a03a3"
["interval"] => int(7200)
}
```
>其它网站访问接口获取必须参数
```
namespace app\user\controller;
use user\Member;
class Sign extends Member
{
function getCowcmsUserid()
{
$url = "http://xxxx.com/public/index.php/api/Apiget/get_param/appid/XXX/appsecret/XXXX/token/xxx"
$param = http_curl($url);
dump($param);
}
}
$param打印出来的参数为
array(5) {
["appid"] => string(40) "50fb0e2cde242fb428e5d35c719e82f3bfca8dcf"
["timestamp"] => int(1584416641)
["nonceStr"] => string(6) "gtug8k"
["signature"] => string(40) "fcee23aa9c3f9055d8d63e4cba51d71a630a03a3"
["interval"] => int(7200)
}
```
>[danger]自行生成访问接口获取必须参数,将 appid,appsecret,timestamp,nonceStr参数按照字典排序用&连接,进行(sha1或者md5,此处主要看后台设置加密类型)加密生成signature签名,如:
signature =sha1(appid=6a9f5b5a0cd0594731113041f989e2a3a27afbcb&appsecret=aa0d037bfd95978e154aecb75739295681060346&nonceStr=8UsD7F×tamp=1586238156)
2.将获取的参数缓存到前端
```
localStorage.setItem("appid","....");
localStorage.setItem("timestamp","....");
localStorage.setItem("nonceStr","....");
localStorage.setItem("signature","....");
localStorage.setItem("interval","....");
```
3.js每次访问接口时,检测timestamp是否失效,如果失效重新获取参数,并缓存数据,否则访问接口
```
appid = localStorage.getItem("appid");
timestamp = localStorage.getItem("timestamp");
nonceStr = localStorage.getItem("nonceStr");
signature = localStorage.getItem("signature");
interval = localStorage.getItem("interval");
timestamp = (new Date()).getTime();; //当前时间戳
//提前10秒兑换新的参数
if(time - timestamp - interval > 10)
{
//参数失效,并重新获取
url = "http://xxxx.com/public/index.php/api/Apiget/get_param_change";
param= {appid:'50fb0e2cde242fb428e5d35c719e82f3bfca8dcf',timestamp:1584418592,nonceStr:'IYI0wK',signature:'d3c512eef5bc25d09b767e75b8f5eff3bd91bec8'};
$.getJSON(url,param, function(json){
localStorage.setItem("appid","....");
localStorage.setItem("timestamp","....");
localStorage.setItem("nonceStr","....");
localStorage.setItem("signature","....");
localStorage.setItem("interval","....");
});
}
```
>cowcms_userid值的获取 方式
当用户登录后由后端返回
- 序言
- 基础
- 源码包
- 核心包
- 完整包
- 系统模块
- 安装模块
- 后台模块
- 插件模块
- 插件开发
- 开发基础
- 权限开发
- 菜单开发
- 开发调试
- 碎片开发
- 碎片钩子预设表
- 插件说明
- 字段插件
- 插件介绍
- 字段使用
- 单行文本
- 多行文本
- 选项-下拉
- 选项-复选
- 选项-单选
- 选项-滑块
- 颜色选择器
- 星级评分
- 日期时间
- 文件上传
- 编辑器
- API接口
- 微信插件
- 微信配置
- 公众号配置
- 支付配置
- 微信支付使用
- API类库
- 红包发放
- 付款到零钱
- 碎片
- 公众号碎片
- 红包碎片
- 付款到零钱碎片
- API微信接口
- 支付宝插件
- 支付宝配置
- 支付宝支付使用
- api接口
- api接口后端开发
- api接口前端使用
- API参数接口
- 会员插件
- 登录使用
- 会员碎片
- API会员接口
- API注册接口
- 积分插件
- 积分设置
- 积分碎片
- API积分接口
- API提现接口
- API兑换接口
- API充值接口
- 订单
- 订单碎片
- API订单接口
- 商城
- 商城钩子
- API商城接口
- API商城会员接口
- 签到
- 签到设置
- 签到碎片
- API签到接口
- 上传
- 上传设置
- 上传JS接口
- 推广插件
- 海报设置
- API海报接口
- 文章插件
- 文章设置
- 文章钩子
- API文章接口
- API文章会员接口
- 管理员
- 管理员碎片
- 站内信
- API站内信接口
- 杂项
- 菜单
- 菜单设置
- API菜单接口
- 错误码
- 支付碎片
- 支付
- 充值
- 购买会员组
- 购买产品