# 云课堂认证服务 **Repository Path**: Efin/classkey ## Basic Information - **Project Name**: 云课堂认证服务 - **Description**: 认证服务模块 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2017-07-07 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 认证服务、视频服务API说明 标签(空格分隔): 大二实训cloudclass --- ##认证服务API说明 ---- ###需要认证的公开的API 1.登录认证 -------- GET: /api/v1/tokens?user=""&password="" ---------- 参数 > user:用户名 password:密码 登录成功 { status:200, msg:"登录成功,请收好认证的token", auth:"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJrZXl2ZXJpZnkiLCJpZCI6IjkiLCJleHAiOiIxNTAwNzM4MzMyOTg3In0=.E8D0328E05DC5AD158558F59E5AC4F9A6693A03AFB69BF741EA1514A16591106" } 找不到用户 { status:404, msg:"用户登录失败,找不到用户" } 密码错误 { status:403, msg:"用户登录失败,密码错误" } 重复登陆 { "status": 406, "msg": "该用户已经登录" } 2.登出 ---- DELETE : /api/v1/tokens/auth` ---------- { "msg": "logout success", "status": 200 } 3.鉴权 ---- POST: /api/v1/tokens?auth=""&privilege="" ---------- 参数: > auth为认证的token privilege为当前操作要求的最低权限 目前权限只有1和2,1代表学生操作,2代表老师操作 有效认证而且权限足够: { status:200 msg:"请收好更新后的认证token", auth:"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJrZXl2ZXJpZnkiLCJpZCI6IjkiLCJleHAiOiIxNTAwNzQwMTYyMzAyIn0=.6BB91E0CB3EF5DC6A94A6C787F936621F8A5FEA714AC61706368D58F18D5ABF7" } 有效认证但权限不够: { status:403, msg:"权限不够" } 有效认证但无此权限(权限不是1、2): { status:404, msg:"找不到此权限" } 认证时间过期 { status:401, msg:"认证过期,请重新登录后再发送认证" } 无效认证 { status:401, msg:"认证无效,请登录后再发送认证" } 4.更新鉴权的token ------------ PUT: /api/v1/tokens?auth="" 有效的认证 { status:200, msg:"请收好更新后的认证token", auth:"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJrZXl2ZXJpZnkiLCJpZCI6IjkiLCJleHAiOiIxNTAwNzQwMTYyMzAyIn0=.6BB91E0CB3EF5DC6A94A6C787F936621F8A5FEA714AC61706368D58F18D5ABF7" } 无效认证--认证时间过期 { status:401, msg:"认证过期,请重新登录后再发送认证", } 无效认证--错误无效的认证 { status:401, msg:"认证无效,请登录后再发送认证", } 5.得到用户信息 -------- GET: /api/v1/users/{auth} > 实际上先解码auth得到userId,然后根据userId来获取用户信息,所以只要auth是有效的就不会返回错误 ---------- 有效的auth,成功获取用户信息 { status:400, msg:新的auth, "user": { "id": 9, "userName": "langdon", "password": "123", "phoneNumber": "654123", "mailbox": "test@test.com" } } 无效的auth { status:404, msg:"找不到用户" } 6.注册用户 ------ POST:/api/v1/users?user=&password=&phoneNumber=&mailbox= > 参数分别为:用户名、密码、电话、邮箱,均不能为空 ---------- 注册成功 { "msg": "注册成功!", "status": 200, "user": { "id": 0, "userName": "langdon", "password": "123", "phoneNumber": "654123", "mailbox": "test@test.com" } } 用户名已存在 { "msg": "此用户名已被使用", "status": 406 } 7.重置密码 ------ PUT:/api/v1/users?user=&oldPwd=&newPwd= > 参数分别为:用户名、旧密码、新密码,均不能为空 ---------- 成功 { status:200, msg:"重置密码成功", "user": { "id": 0, "userName": "langdon", "password": "123", "phoneNumber": "654123", "mailbox": "test@test.com" } } 用户名不存在 { status:404, msg:"用户名不存在", } 密码错误 { status:400, msg:"密码错误", } 8.更新用户信息 -------- PATCH:/api/v1/users?auth=&phoneNumber=&mailbox= > 参数分别为:认证的token、新电话、新邮箱,只有auth不能为空 > 其实只要是有效的auth,则会更新成功,与API4得到用户信息的同一个道理 成功 { "status": 200, "msg": "更新user信息成功", "user": { "id": 9, "userName": "langdon", "password": "456", "phoneNumber": "654123", "mailbox": "test_test@test.com" } } 无效的auth---只有auth是有效的就不会出现该错误 { status:200, msg:"找不到此用户" } 9.用户认证为老师 --------- POST:/api/v1/teachers/{auth} > 参数:auth为用户登录获得的认证token ---- 成功 { "status": 200, "msg": "认证成功", "teacher": { "id": 0, "teacher_room": "103495", "teacher_create_time": "2017-07-22", "userId": 9 } } 失败,老师已经认证 { status:406, msg:"该老师已经注册" } 10.获取老师全部信息---只取老师表中信息 --------------------- GET:/api/v1/teachers/{auth} > 参数:auth为用户登录获得的认证token 失败 { status:404, msg:"找不到此老师,此老师尚未认证", } 成功 { status:200, msg:"成功获取teacher信息", "teacher": { "id": 11, "teacher_room": "103495", "teacher_create_time": "2017-07-22", "userId": 9 } } 11.自定义老师房间号 ----------- PUT:/api/v1/teachers?auth=&room= > 参数:auth为认证的token,room为房间号 --- 失败 { status:406, msg:"该房间号已被使用" } 成功 { status:200, msg:"更新成功", "teacher": { "id": 11, "teacher_room": "103495", "teacher_create_time": "2017-07-22", "userId": 9 } } ###不需要认证的公开的API 12.获取用户信息 --------- GET:/api/v1/users/name/{username} 失败 { status:404, msg:"找不到此用户" } 成功 { status:200, msg:"成功获取user信息", "user": { "id": 0, "userName": "langdon", "password": "******", "phoneNumber": "654123", "mailbox": "test@test.com" } } 13.获取老师信息 --------- GET:/api/v1/teachers/teacherId/{teacherId} > 参数:teacherId:该老师在数据库中的id 失败 { status:404, msg:"找不到此老师,请输入有效的teacherId" } 成功 { "status": 200, "msg": "success", "teacher": { "id": 11, "teacher_room": "789456", "teacher_create_time": "2017-07-22", "userId": 9 } } #视频服务的API说明 ##需要认证的公开的API 1.老师创建直播 -------- POST:/api/v1/locations?auth= > 参数说明:auth不能为空,为用户认证的token 成功:返回直播、聊天室的URL { "msg": "成功新建直播地址和聊天室地址", "status": 200, "location": { "videoURL": "rtmp://123.207.73.150:1935/xlive/OYCYFPDJ", "chatURL": "ws://119.29.132.15:8080/chat/api/v1/websocket/chat/OYCYFPDJ", "room": "789456", "key": "OYCYFPDJ" } } > VideoURL 就是直播的视频地址 ChatURL为相应的聊天室地址,使用的时候记得在最后天上用户名,以记录每一个进入聊天室的用户 > 比如:ws://119.29.132.15:8080/chat/api/v1/websocket/chat/OYCYFPDJ/user > Room是开该直播的老师房间号 Key就是VideoURL、ChatURL的末尾部分,是一个密钥,用于唯一标识视频、聊天室 失败:找不到老师,只要是有效的auth就不会得到该结果 { status:404, msg:"找不到此老师,请先认证老师再操作" } 失败: { status:400, msg:"一名老师只能同时开一个直播" } 2.老师获取自己直播信息 ------------ GET:/api/v1/locations?auth= 成功:返回直播、聊天室的URL { "msg": "成功新建直播地址和聊天室地址", "status": 200, "location": { "videoURL": "rtmp://123.207.73.150:1935/xlive/OYCYFPDJ", "chatURL": "ws://119.29.132.15:8080/chat/api/v1/websocket/chat/OYCYFPDJ", "room": "789456", "key": "OYCYFPDJ" } } 失败: { status:404, msg:"找不到直播,请创建直播再查询" } 3.老师删除直播 -------- DELETE: /api/v1/locations?auth=&key= > 参数:auth为用户认证的token,key为直播的密钥 成功 { status:200, msg:"删除直播成功" } 失败: { status:404, msg:"请输入有效的key" } 4.用户获取直播信息 ---------- GET: /api/vi/locations/key > key是直播的密钥,比如上面例子中OYCYFPDJ 成功:返回直播、聊天室的URL { "msg": "成功新建直播地址和聊天室地址", "status": 200, "location": { "videoURL": "rtmp://123.207.73.150:1935/xlive/OYCYFPDJ", "chatURL": "ws://119.29.132.15:8080/chat/api/v1/websocket/chat/OYCYFPDJ", "room": "789456", "key": "OYCYFPDJ" } } 失败 { status:404, msg:"找不到此直播" } 5.用户获取聊天室 --------- GET: /api/vi/rooms/auth > 参数auth为用户认证的token 成功 { "msg": "成功获取聊天密钥,使用此密钥即可建立聊天室", "status": 200, "chat": { "chatURL": "ws://119.29.132.15:8080/chat/api/v1/websocket/chat/LBCEIVNB", "room": "9", "key": "LBCEIVNB" } } > chatURL的用法与上面的说明一样,只需要在末尾添加上用户名即可 此处的room实际上是userId Key为房间密钥 失败 { "msg": "一个用户只可以建一个聊天室哦", "status": 406 }