“单点登录接口开发文档”的版本间的差异

来自成绩云帮助中心
跳转至: 导航搜索
(创建页面,内容为“== <p style="background:#6a9ee4;padding:8px 12px;color:#ffffff;">前言</p> == 本文档针对只做单点登录、不做数据同步的平台而编写。 接入...”)
 
单点登录
 
(未显示2个用户的15个中间版本)
第4行: 第4行:
  
 
接入知未产品单点登录的平台需要先联系知未科技研发,获取2个基本参数:平台ID'''[platform]''',平台密钥'''[key]'''。这两个参数也可以反过来向知未科技提供。
 
接入知未产品单点登录的平台需要先联系知未科技研发,获取2个基本参数:平台ID'''[platform]''',平台密钥'''[key]'''。这两个参数也可以反过来向知未科技提供。
 +
 +
对接新学校的时候,双方约定'''[orgId]''',在各自平台创建好学校。
 +
 +
部署好系统后会确定'''[serverBaseUrl]'''。
  
 
== <p style="background:#6a9ee4;padding:8px 12px;color:#ffffff;">单点登录</p> ==
 
== <p style="background:#6a9ee4;padding:8px 12px;color:#ffffff;">单点登录</p> ==
第10行: 第14行:
 
;<span style="font-size:15px;">接口说明</span>
 
;<span style="font-size:15px;">接口说明</span>
 
请求方式:<code>GET</code>  <br/>
 
请求方式:<code>GET</code>  <br/>
请求URL: '''[serverBaseUrl]'''/good-class/api/import?platform='''[platform]'''&timestamp='''[timestamp]'''&sign='''[sign]'''<br/>
+
PC版登录URL:'''[serverBaseUrl]'''/school-users/api/pclogin?platform='''[platform]'''&orgId='''[orgId]'''&role='''[role]'''&name='''[name]'''&grade='''[grade]'''&class='''[class]'''&timestamp='''[timestamp]'''&sign='''[sign]'''<br/>
 +
移动版登录URL:'''[serverBaseUrl]'''/school-users/api/mlogin?platform='''[platform]'''&orgId='''[orgId]'''&role='''[role]'''&name='''[name]'''&grade='''[grade]'''&class='''[class]'''&timestamp='''[timestamp]'''&sign='''[sign]'''<br/>
 
URL参数说明:<br/>
 
URL参数说明:<br/>
 
{| class="wikitable"
 
{| class="wikitable"
第24行: 第29行:
 
|平台ID
 
|平台ID
 
|-
 
|-
|timestamp
+
|orgId
|int
+
|string
 
|是
 
|是
|时间戳(Unixtime),有效时长600秒
+
|学校ID
 
|-
 
|-
|sign
+
|role
 
|string
 
|string
 
|是
 
|是
|签名,只对platform和timestamp签名,不用对POST数据内容签名。详见[https://chengjiyun.com/wiki/index.php?title=%E7%BA%AA%E5%BE%8B%E6%98%9F%E6%8E%A5%E5%8F%A3%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3#.E7.AD.BE.E5.90.8D.E5.8F.82.E6.95.B0sign.E7.94.9F.E6.88.90.E8.AF.B4.E6.98.8E 签名参数sign生成说明]
+
|角色名称:管理员、教师或学生
|}
+
 
+
POST数据结构参数:<br/>
+
{| class="wikitable"
+
 
|-
 
|-
| style="width:40px; text-align:center;" | 参数
+
|name
| style="width:150px; text-align:center;" | 类型
+
| style="width:200px; text-align:center;" | 描述
+
|-
+
|id
+
 
|string
 
|string
|记录ID,用于确认记录是否已经导入过。
+
|
 +
|用户姓名。对于管理员,双方要约定创建这样的账号。对于有重名的教师,把教师的手机号后2位追加到姓名后,例如“张老师86”、“张老师33”。学生通过年级和班别值来区分重名的情况。
 
|-
 
|-
 
|grade
 
|grade
 
|string
 
|string
 +
|对于学生是,其它角色否
 
|年级
 
|年级
 
|-
 
|-
|className
+
|class
 
|string
 
|string
 +
|对于学生是,其它角色否
 
|班别
 
|班别
 
|-
 
|-
|name
+
|timestamp
|string
+
|姓名
+
|-
+
|time
+
 
|int
 
|int
|记录事件发生时间戳(Unixtime),相当于打卡时间。
+
|
 +
|以'''“秒”'''为单位的时间戳(Unixtime),有效时长7200秒
 
|-
 
|-
|event
+
|sign
 
|string
 
|string
|事件。例如“异常”、“晚归“、“迟到”、“未到寝“。
+
|
 +
|签名
 
|}
 
|}
 
  
 
== <p style="background:#6a9ee4;padding:8px 12px;color:#ffffff;">签名参数sign生成说明</p> ==
 
== <p style="background:#6a9ee4;padding:8px 12px;color:#ffffff;">签名参数sign生成说明</p> ==
第85行: 第82行:
  
 
$data = array(
 
$data = array(
   'begintime' => 1639016550,
+
   'platform' => 'testPlatform',
   'endtime' => 1639016555,
+
   'orgId' => 'testSchool',
   'timestamp' => 1639017000
+
  'role' => '教师',
 +
  'name' => '李老师',
 +
   'timestamp' => 1639017000,
 
);
 
);
 
$sign = sign($data, $key);
 
$sign = sign($data, $key);
 
</pre>
 
</pre>
  
注意:一般接口会有一个timestamp参数,如无特别说明,timestamp的有效时间为600秒,超过该时长请求无效,以降低受到重放攻击的风险。此时长在实际使用中可能会做出调整,请尽可能地使用实时时间。
+
注意:timestamp的有效时间为7200秒,超过该时长请求无效,以降低受到重放攻击的风险。

2022年3月9日 (三) 11:36的最后版本

前言

本文档针对只做单点登录、不做数据同步的平台而编写。

接入知未产品单点登录的平台需要先联系知未科技研发,获取2个基本参数:平台ID[platform],平台密钥[key]。这两个参数也可以反过来向知未科技提供。

对接新学校的时候,双方约定[orgId],在各自平台创建好学校。

部署好系统后会确定[serverBaseUrl]

单点登录

第三方平台按如下方式构造知未产品(例如“成绩分析”)的入口链接:

接口说明

请求方式:GET
PC版登录URL:[serverBaseUrl]/school-users/api/pclogin?platform=[platform]&orgId=[orgId]&role=[role]&name=[name]&grade=[grade]&class=[class]&timestamp=[timestamp]&sign=[sign]
移动版登录URL:[serverBaseUrl]/school-users/api/mlogin?platform=[platform]&orgId=[orgId]&role=[role]&name=[name]&grade=[grade]&class=[class]&timestamp=[timestamp]&sign=[sign]
URL参数说明:

参数 类型 是否必填 描述
platform string 平台ID
orgId string 学校ID
role string 角色名称:管理员、教师或学生
name string 用户姓名。对于管理员,双方要约定创建这样的账号。对于有重名的教师,把教师的手机号后2位追加到姓名后,例如“张老师86”、“张老师33”。学生通过年级和班别值来区分重名的情况。
grade string 对于学生是,其它角色否 年级
class string 对于学生是,其它角色否 班别
timestamp int “秒”为单位的时间戳(Unixtime),有效时长7200秒
sign string 签名

签名参数sign生成说明

第一步:对传入的参数按照键名排序
第二步:使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA
第三步:在stringA最后拼接上“&key=[平台密钥]”得到stringSignTemp字符串,并对stringSignTemp进行MD5运算
第四步:得到最终请求字符串sign

PHP签名算法示例:

// $key 平台密钥
function sign($data, $key) {
  ksort($data);                                   // 正向排序
  $key_str = urldecode(http_build_query($data));  // 连接字符串
  $key_str .= '&key=' . $key;                     // 拼接key
  return md5($key_str);
}

$data = array(
   'platform' => 'testPlatform',
   'orgId' => 'testSchool',
   'role' => '教师',
   'name' => '李老师',
   'timestamp' => 1639017000,
);
$sign = sign($data, $key);

注意:timestamp的有效时间为7200秒,超过该时长请求无效,以降低受到重放攻击的风险。