1. 中国大学MOOC第三方接入登录

1.1. WEB端用户注册登录

时序图展示:

img

1.1 成功时序

img

1.2 失败时序

1.1.1. 用户注册/登录接口

用户注册/登录接口描述

功能描述 注册&登录
参数说明 appId: 机构产品ID,String类型(必填) nm:判断首次用户登录时是否需要手动绑定中M账号(值为true:直接生成中m账号不需要绑定,值为false:登录需要手动绑定中M页绑定账号),布尔类型(非必填) value:将重要的请求参数对称加密后的数据,String类型(必填)
请求方法 GET
请求头 Get /api/account/login2site.do?appId=5c63655b1fd688fee2cd0d368e5ac7c2&nm=false&value=aes(json(appId+loginId+nickName+realName+email+studentNo+schoolName+schoolRole+timestamp+nonce+notifyUrl+errorUrl)) Host: 127.0.0.1:8080Content-Type: text/html;charset=UTF-8注意:这里的json结构如下:{“appId":"xxxxxx","loginId":"yuntian@163.com",…}
请求体
响应 1. 如果用户第一次通过此api访问中国大学MOOC,则相当于注册新用户并且登录;如果不是第一次,就会直接登录到中国大学MOOC。判断依据:通过用户的loginId判断。2. appId和对称加密的key从中国大学MOOC交付运营人员获取并安全保存,避免泄露带来不必要的安全问题;3. errorUrl参数必须提供,如果不提供,出现错误将重定向的中国大学MOOC的404错误界面。
errorUrl的生成 String errorUrl =AESCipherUtils.bytesToHexStr (url.getBytes()))获取到errorUrl,通过参数的形式传过来。

value参数组成

参数名 是否必须 参数类型 字段长度 参数描述
appId 必须 String 32个字符 由中国大学MOOC的交付运营人员分配给接入的企业或者学校,表示应用的id
timestamp 必须 Long 长整型,8个字节 请求毫秒级时间戳
loginId 必须 String 64个字符 唯一标识,用户名(相同产品ID对应的用户名不能重复)
nickName 非必须 String 64个字符,UTF-8编码 用户的昵称,中M字段区分用户身份信息,用于展示(出现重复随机加后缀)
realName 必须 String 64个字符,UTF-8编码 用户的真实姓名
email 非必须 String 64个字符 用户的电子邮箱,用于判断中M是否存在邮箱账号依据
phoneNumber 非必须 String 64个字符 用户的手机号码,用于判断中M是否存在手机账号依据
autoVerify 必须 Boolean true 自动认证学生、老师信息
studentNo 必须 String 32个字符 autoVerify为true,此字段赋值学生学号和老师工号
schoolName 必须 String 32个字符,UTF-8编码 中M需要先创建学校云并发布学校主页,否则会生成失败
schoolRole 必须 int 整型 4个字节 身份类型(0:学生,1:教师,2:高校管理员)
notifyUrl 必须 String 512个字节 登录成功通知,见1.1.2“用户注册/登录通知接口”.
errorUrl 必须 String 512个字节 错误url重定向
returnUrl 非必须 String 512个字节 页面url重定向

加密方法

1.所有的参数变成json形式。例如:

{
  "appId":"dc2870b1dfdf0fd2c6fecf13d3de0a68",

  "timestamp":1445328005805,

  "loginId":"study01@163.com",

  "nickName":"study01",

  "email":"study01@163.com",

  "studentNo ":"0612800227",

  "schoolName":"浙江职业技术学院",

  "schoolRole":1,

  "autoVerify":"true"

  "notifyUrl": "http://www.icourse163.org/api/login/notify.do",

  "errorUrl":"http://www.icourse163.org/api/error/loginError.htm"
}

2.对称加密方法进行加密,加密算法如下(实现如路径“通用信息-1.2. 附录”下的JAVA示例):

String value=AESCipherUtils.encryptBcdString(json, key)

  • json:如①所示的json串
  • key:对称加密的key,需要从中国大学MOOC交付运营人员获取。

注意事项

  1. 免登录介绍:如果用户第一次通过此api访问中国大学MOOC,则相当于注册新用户并且登录,如果不是第一次,就会直接登录到中国大学MOOC,通过用户的loginId判断。

  2. appId和对称加密的key从中国大学MOOC交付运营人员获取并安全保存,避免泄露带来不必要的安全问题。

  3. errorUrl参数必须提供,如果不提供,出现错误我们将重定向的中国大学MOOC的404错误界面。

1.1.2. 用户注册/登录通知接口

通知接口描述

功能描述 用户注册/登录回调接口
参数说明 signature签名,参考第2部分平台调用第三方应用timestamp时间戳,请求毫秒级nonce参考第2部分平台调用第三方应用
请求方法 POST
请求头 POST /api/login/notify.do?signature=sha1(b5285a02f2e0e731295b925dce83d45c165461354311444960726000)×tamp=1445328005805&nonce=123Host: 127.0.0.1:8080Content-Type: application/json;charset=UTF-8
请求体 {"openUid":"9dc8f10af916f15456129b2ac6376717", "loginExtra": { "studentNo":"072623002", "schoolRole":1, "loginId":"study01@163.com", }}studentNo、schoolRole、loginId同"用户注册/登录接口"接口请求的加密参数中的相应的字段,用于第三方系统与平台用户的用户ID对应
响应 {"code":"200"}

value参数组成

参数名 是否必须 参数类型 字段长度 参数描述
signature 必须 String 32个字符 参考第2部分平台调用第三方应用
timestamp 必须 Long 长整型,8个字节 请求毫秒级时间戳
nonce 必须 String 随机数,字符或者整数组成,16字符 参考第2部分平台调用第三方应用
openUid 必须 String 32个字符 用户在平台上的id

1.1.3. 登出接口

登出接口描述

功能描述 退出登录
参数说明 appId: 应用ID,String类型(必填)signature:签名,参考通用的api签名(必填)format:返回结果的序列化类型,目前默认只有json(选填)nonce:随机数(必填)timestamp:GMT+0时间戳随机数(必填)openUid:用户openUid
请求方法 GET
请求头 GET /open/logout?appId=b1c6caca039d8728fa40a087dbad437b&signature=5a3f4896377f078904c6eb27f372bb6ce5b5cfb3&format=json&nonce=58878962936×tamp=1502962579077&openUid=2de3332473696c60ee9504ef9495aa891020695007Content-Type: text/html;charset=UTF-8
请求体
响应 响应码:200 (HTTP的响应码统一为200,接口调用结果在响应体中体现)响应体:code:200—接口调用成功。其他参考响应码一个完整的响应体示例如下:{"code": 200,result:{ "openUid":"9dc8f10af916f15456129b2ac6376717"}}

1.1.4. 校验加密内容接口

校验加密内容,检验加密信息是否准确

请求说明

请求方法:GET

请求地址:https://www.icourse163.org/mm-open-api

/decrypt

请求参数(x-www-form-urlencoded)

appId: ffd1e010d999a18f3eaa91973da7e2df
nonce: 1559117956529
signature: 48c74f489df07a8eb079197af25a8b976d894648
timestamp: 1559117956529
encryptContent: 加密内容

参数说明

字段 字段类型 是否必填 字段说明
encryptContent String 加密内容

返回结果

{
    "code": 0,
    "result": "{test}"
}

1.1.5. 解绑外部账号绑定关系

解绑外部账号与mooc平台账号的绑定关系

请求说明

请求方法:GET

请求地址:https://www.icourse163.org/mm-open-api/open/account/unbind

请求参数(x-www-form-urlencoded)

appId: ffd1e010d999a18f3eaa91973da7e2df
nonce: 1559117956529
signature: 48c74f489df07a8eb079197af25a8b976d894648
timestamp: 1559117956529
encryptLoginId: AES加密的用户在外部系统的唯一身份标识

参数说明

字段 字段类型 是否必填 字段说明
encryptLoginId String AES加密的用户在外部系统的唯一身份标识(key为appId对应的aesKey)

返回结果

{
    "code": 0,
    "result": "true"
}
© All Rights Reserved            updated 2024-07-29 16:46:50

results matching ""

    No results matching ""