跳转至

单点登录

注: 所有接口仅针对旗舰会员或以上会员级别提供,非旗舰会员及以上无法调用,所有开放平台接口默认共享10QPS

单点登录允许考生只在用户的系统上登录一次,点击试卷考试时不再需要再次登录, 例如用户A有公司自己的OA系统, 考生王二登录到公司的OA系统后, 在系统里点开始考试,这时王二就不再需要输入自己的账号,而是直接就进入考试了。

1、单点登录考试

单点登录考试允许用户考生直接在用户系统上点击就开始考试, 不再需要额外的身份认证。

单点登录考试

GET https://api.kyexam.com/newstudentsso

参数:

userId=用户id&loginValue=试卷验证信息&password=考生密码&eid=试卷id&aspart=0&rflag=0&expiretime=1

参数说明:

  • code 每个账户唯一对应的验证码,string类型,旗舰会员及以上可在系统设置->开放平台设置中获取。
  • time 当前时间戳,例如1638768935。
  • userId 用户id。
  • loginValue 表示的是考生的登录值,比如说系统设置了使用手机登录,那么这里就是考生的手机号码。
  • password 考生密码。
  • eid 试卷id
  • aspart 1表示去掉侧边栏
  • rflag 如果是登录到考生后台,这里可以指定登录后自动跳转到对应的页面,取考生后台页面连接上的前端路由信息
  • expiretime 认证过期时间,expiretime应大于0小于15,对应1-14分钟

如果操作成功,则返回:

{
    "data": "https://api.kyexam.com/login/u/api/112?rflag=0\u0026loginValue=13240935349\u0026password=13240935349\u0026eid=3506\u0026token=a05d2c44c08d87c2243315d63e35d274\u0026aspart=0",
    "status": "ok"
}

如果操作失败,则返回:


接口使用示例:

package main

import (
    "crypto/md5"
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "os"
    "strconv"
    "time"
)

const (
    Code = "xxx"
)

func main() {
    host := "https://api.kyexam.com"
    resource := "/newstudentsso"

    client := &http.Client{}
    fullPath := host + resource

    req, _ := http.NewRequest(http.MethodGet, fullPath, nil)
    time64 := time.Now().UTC().Unix()
    ParseToken := fmt.Sprintf("%x", md5.Sum([]byte(strconv.FormatInt(time64, 10)+Code)))
    req.Header.Set("Authorization", ParseToken)

    q := req.URL.Query()
    q.Add("code", Code)
    q.Add("time", strconv.Itoa(int(time64)))
    q.Add("userId", "1")
    q.Add("loginValue", "2")
    q.Add("password", "3")
    q.Add("eid", "4")
    q.Add("aspart", "0")
    q.Add("rflag", "0")
    q.Add("expiretime", "1")

    req.URL.RawQuery = q.Encode()

    resp, err := client.Do(req)
    if err != nil {
        log.Println(err)
        return
    }

    defer resp.Body.Close()

    b, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Println(err)
        return
    }

    // fmt.Println(string(b))
    f, _ := os.OpenFile("test.txt", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
    f.Write(b)
}

2、单点登录考生后台

单点登录到考生后台和单点登录考试原理一样, 差别是不传eid参数或传0。

系统判断eid为0时会自动跳转到考生后台界面。

单点登录考生后台

GET https://api.kyexam.com/newstudentsso

参数:

userId=用户id&loginValue=试卷验证信息&password=考生密码&eid=试卷id&aspart=0&rflag=0&expiretime=1

参数说明:

  • code 每个账户唯一对应的验证码,string类型,旗舰会员及以上可在系统设置->开放平台设置中获取。
  • time 当前时间戳,例如1638768935。
  • userId 用户id。
  • loginValue 表示的是考生的登录值,比如说系统设置了使用手机登录,那么这里就是考生的手机号码。
  • password 考生密码。
  • eid 试卷id
  • aspart 1表示去掉侧边栏
  • rflag 如果是登录到考生后台,这里可以指定登录后自动跳转到对应的页面,取考生后台页面连接上的前端路由信息
  • expiretime 认证过期时间,expiretime应大于0小于15,对应1-14分钟

如果操作成功,则返回:

{
    "data": "https://api.kyexam.com/login/u/api/112?rflag=0\u0026loginValue=13240935349\u0026password=13240935349\u0026eid=0\u0026token=a05d2c44c08d87c2243315d63e35d274\u0026aspart=0",
    "status": "ok"
}

如果操作失败,则返回:


接口使用示例:

package main

import (
    "crypto/md5"
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "os"
    "strconv"
    "time"
)

const (
    Code = "xxx"
)

func main() {
    host := "https://api.kyexam.com"
    resource := "/newstudentsso"

    client := &http.Client{}
    fullPath := host + resource

    req, _ := http.NewRequest(http.MethodGet, fullPath, nil)
    time64 := time.Now().UTC().Unix()
    ParseToken := fmt.Sprintf("%x", md5.Sum([]byte(strconv.FormatInt(time64, 10)+Code)))
    req.Header.Set("Authorization", ParseToken)

    q := req.URL.Query()
    q.Add("code", Code)
    q.Add("time", strconv.Itoa(int(time64)))
    q.Add("userId", "1")
    q.Add("loginValue", "2")
    q.Add("password", "3")
    q.Add("eid", "4")
    q.Add("aspart", "0")
    q.Add("rflag", "0")
    q.Add("expiretime", "1")

    req.URL.RawQuery = q.Encode()

    resp, err := client.Do(req)
    if err != nil {
        log.Println(err)
        return
    }

    defer resp.Body.Close()

    b, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Println(err)
        return
    }

    // fmt.Println(string(b))
    f, _ := os.OpenFile("test.txt", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
    f.Write(b)
}

3、子管理员单点登录

子管理员单点登录管理后台, 接口如下:

请求

GET https://admin.kyexam.com/index.php?option=com_exams&task=api.childAdminSSO&format=raw

请求数据

code=权限码&email=邮箱&password=密码
  • code 每个账户唯一对应的验证码,string类型,该值可联系优考试获取
  • email 子管理员邮箱,必填
  • password 子管理员密码,必填

登录成功后,系统会自动跳转到管理后台