單點(diǎn)登錄¶
注: 所有接口僅針對(duì)旗艦會(huì)員或以上會(huì)員級(jí)別提供,非旗艦會(huì)員及以上無法調(diào)用,所有開放平臺(tái)接口默認(rèn)共享10QPS。
單點(diǎn)登錄允許考生只在用戶的系統(tǒng)上登錄一次,點(diǎn)擊試卷考試時(shí)不再需要再次登錄, 例如用戶A有公司自己的OA系統(tǒng), 考生王二登錄到公司的OA系統(tǒng)后, 在系統(tǒng)里點(diǎn)開始考試,這時(shí)王二就不再需要輸入自己的賬號(hào),而是直接就進(jìn)入考試了。
1、單點(diǎn)登錄考試¶
單點(diǎn)登錄考試允許用戶考生直接在用戶系統(tǒng)上點(diǎn)擊就開始考試, 不再需要額外的身份認(rèn)證。
單點(diǎn)登錄考試¶
GET https://api.kyexam.com/newstudentsso
參數(shù):¶
userId=用戶id&loginValue=試卷驗(yàn)證信息&password=考生密碼&eid=試卷id&aspart=0&rflag=0&expiretime=1
參數(shù)說明:¶
- code 每個(gè)賬戶唯一對(duì)應(yīng)的驗(yàn)證碼,string類型,旗艦會(huì)員及以上可在系統(tǒng)設(shè)置->開放平臺(tái)設(shè)置中獲取。
- time 當(dāng)前時(shí)間戳,例如1638768935。
- userId 用戶id。
- loginValue 表示的是考生的登錄值,比如說系統(tǒng)設(shè)置了使用手機(jī)登錄,那么這里就是考生的手機(jī)號(hào)碼。
- password 考生密碼。
- eid 試卷id
- aspart 1表示去掉側(cè)邊欄
- rflag 如果是登錄到考生后臺(tái),這里可以指定登錄后自動(dòng)跳轉(zhuǎn)到對(duì)應(yīng)的頁面,取考生后臺(tái)頁面連接上的前端路由信息
- expiretime 認(rèn)證過期時(shí)間,expiretime應(yīng)大于0小于15,對(duì)應(yīng)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、單點(diǎn)登錄考生后臺(tái)¶
單點(diǎn)登錄到考生后臺(tái)和單點(diǎn)登錄考試原理一樣, 差別是不傳eid參數(shù)或傳0。
系統(tǒng)判斷eid為0時(shí)會(huì)自動(dòng)跳轉(zhuǎn)到考生后臺(tái)界面。
單點(diǎn)登錄考生后臺(tái)¶
GET https://api.kyexam.com/newstudentsso
參數(shù):¶
userId=用戶id&loginValue=試卷驗(yàn)證信息&password=考生密碼&eid=試卷id&aspart=0&rflag=0&expiretime=1
參數(shù)說明:¶
- code 每個(gè)賬戶唯一對(duì)應(yīng)的驗(yàn)證碼,string類型,旗艦會(huì)員及以上可在系統(tǒng)設(shè)置->開放平臺(tái)設(shè)置中獲取。
- time 當(dāng)前時(shí)間戳,例如1638768935。
- userId 用戶id。
- loginValue 表示的是考生的登錄值,比如說系統(tǒng)設(shè)置了使用手機(jī)登錄,那么這里就是考生的手機(jī)號(hào)碼。
- password 考生密碼。
- eid 試卷id
- aspart 1表示去掉側(cè)邊欄
- rflag 如果是登錄到考生后臺(tái),這里可以指定登錄后自動(dòng)跳轉(zhuǎn)到對(duì)應(yīng)的頁面,取考生后臺(tái)頁面連接上的前端路由信息
- expiretime 認(rèn)證過期時(shí)間,expiretime應(yīng)大于0小于15,對(duì)應(yīng)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、子管理員單點(diǎn)登錄¶
子管理員單點(diǎn)登錄管理后臺(tái), 接口如下:
請(qǐng)求
GET https://admin.kyexam.com/index.php?option=com_exams&task=api.childAdminSSO&format=raw
請(qǐng)求數(shù)據(jù)
code=權(quán)限碼&email=郵箱&password=密碼
- code 每個(gè)賬戶唯一對(duì)應(yīng)的驗(yàn)證碼,string類型,該值可聯(lián)系優(yōu)考試獲取
- email 子管理員郵箱,必填
- password 子管理員密碼,必填
登錄成功后,系統(tǒng)會(huì)自動(dòng)跳轉(zhuǎn)到管理后臺(tái)