單點登錄¶
注: 所有接口僅針對旗艦會員或以上會員級別提供,非旗艦會員及以上無法調用,所有開放平臺接口默認共享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 子管理員密碼,必填
登錄成功后,系統會自動跳轉到管理后臺